易途科技Java学习笔记.docx

上传人:b****6 文档编号:8081431 上传时间:2023-01-28 格式:DOCX 页数:45 大小:223.22KB
下载 相关 举报
易途科技Java学习笔记.docx_第1页
第1页 / 共45页
易途科技Java学习笔记.docx_第2页
第2页 / 共45页
易途科技Java学习笔记.docx_第3页
第3页 / 共45页
易途科技Java学习笔记.docx_第4页
第4页 / 共45页
易途科技Java学习笔记.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

易途科技Java学习笔记.docx

《易途科技Java学习笔记.docx》由会员分享,可在线阅读,更多相关《易途科技Java学习笔记.docx(45页珍藏版)》请在冰豆网上搜索。

易途科技Java学习笔记.docx

易途科技Java学习笔记

Day01Day02

Java到底有哪些优势

1.跨平台(平台=OS)可移植性

在不同的操作系统之上可以不用做任何代码的修改

直接使用

a)字节码文件:

字节码文件不包括任何内存布局信息与操作系统和硬件毫无关系(Java的内存分布是在运行的时候才动态分配的)

b)JVM:

真正解释字节码文件内容并且和操作系统交互的部分Sun(Oracle)已经给每一款操作系统都写好了现成的JVM

JVM组成部分:

类加载器ClassLoader

字节码校验器

解释执行器(翻译)逐行的解释执行代码

2.安全健壮

3.面向对象

面向过程:

程序:

函数+变量(算法+数据结构)

面向对象:

如:

SmallTalk

程序:

对象和对象相互之间的“通讯”

对象:

属性和方法

类:

创建对象的模板具有相同特征的一类事物的高度抽象集合概念

对象是类的实例化,类是对象的抽象化。

引用

4.动态更新

5.简单!

没有指针和相关的内存操作

new内存操作

gc内存回收清理Java中的回收机制:

零引用回收

问题:

();

().gc();

调用gc的下一行是否回收不一定

6.免费开源

搭建Java开发平台

(JavaSDKjava开发工具包)SDK(软件开发工具包)

JDK安装

JDK猛虎

JDK野马

JDK海豚

JDKJREJVM

JDKJava开发工具包

JREJava运行环境

JVMJava虚拟机

JDK=JRE+常用工具

JRE=JVM+核心类库

JVM=三部分

2.设置环境变量

我的电脑-属性-高级-环境变量

为了使开发过程变得更加简单快捷(问题:

搭载Java开发平台最少设置几个环境变量零个。

为了方便,不是必要。

环境变量名字

给谁用

做什么用

PATH

操作系统

更快的找到程序

CLASSPATH

JVM(类加载器)

找到字节码文件

JAVA_HOME

其他Java程序

找到JDK

a)PATH就是为了在任何一个目录下都可以直接访问bin目录下的工具(命令)

b)C:

\ProgramFiles\Java\默认值:

.(当前目录)

c)JAVA_HOME设置到JDK安装目录下

JAVA_HOME:

JDK安装目录下

CLASSPATH:

.

PATH:

%JAVA_HOME%\bin

*环境变量名字最好全部大写

*在CMD设置环境变量时=左右两边不要加空格

*在CMD中定义任意程序环境变量:

如:

setPATH=E:

\TTPlayer

同时定义两个环境变量中间加分号,或者

SetPATH=%PATH%;E:

\TTPlayer

分号后面不能加空格

运行过程:

编译期:

Java源文件.java编译为字节码文件.class

运行期:

JVM--OS硬件

编写代码HelloWorld

如何编译java程序

javac源文件的名字.java

如何运行java程序

java类名(没有扩展名)

代码:

publicclassHelloWorld

{

publicstaticvoidmain(String[]args)

{

"Hello!

!

");

}

}

public修饰符modifier

static修饰符静态(不用通过对象调用)

void方法返回值(表示这个方法不需要返回值)

main标识符

标识符Identifier

1.必须是英文_$中文开头

2.不能使用有特殊意义的名字(关键字)

类名(接口名):

每个单词首字母大写

属性名和方法名:

首字母小写,之后每个单词首字母大写

包名:

全部小写

Themostcommonrelationshipsbetweenclassesare

•Dependence(“uses–a”)

•Aggregation(“has–a”)

•Inheritance(“is–a”)

类成员:

类可以拥有三种成员:

·字段:

它们是类及其对象相关联的数据变量,保存着类或者对象的状态。

·方法:

它们包含类的可执行代码并定义了对象的行为

·嵌套类(nestedclass)与嵌套接口(nestedinterface):

它们是在其他的类或接口声明的内部声明的类与接口。

类修饰符:

·注解(annotation)

·public:

任何人都可以声明对这种类的对象的引用,或者访问这种类的公共成员。

·abstract:

抽象类,被认为是不完整的,所以我们不能创建抽象类的实例。

通常这是因为抽象类包含abstract方法,这些方法必须在子类中实现。

·final:

final类不允许拥有子类。

类不能既是final的又是abstract的。

·严格浮点(strictfloatingpoint):

声明为strictfp的类要求类中的所有浮点运算都是精确运算

Java当中的包(对应操作系统当中的目录)

1.区分不同的命名空间

2.对多个.class文件进行分类的归类

编译语句:

javac-d.

-d自动创建源文件当中指定的包结构

.在当前目录下创建目录结构

运行语句:

java包名.类名

通过包名和类名来唯一确认一个类

打包语句:

package

导包语句:

import

例:

打包,源文件放在桌面,为了能够运行,定义主方法main

package;

publicclassStudent

{

publicstaticvoidmain(String[]args)

{

"Hello!

");

}

}

编译:

打开CMD,输入“cd桌面”转到当前目录,编译语句:

javac–d.

运行:

java(通过包名+类名唯一确定一个类)

例:

导包,先写一个打包文件:

package;

publicclassStudent

{

publicstaticvoidSayHello()

{

"Hello!

");

}

}

编译:

javac–d.

然后写导包文件:

importclassHello

{

publicstaticvoidmain(String[]args)

{

();

}

}

编译:

javac

运行:

javaHello

生成帮助文档的常用工具javadoc语句:

javadoc-ddoc源文件的名字.java

Java注释:

单行注释/

多行注释/**/

文档注释/***/

生成jar包

jar包就是java当中可执行的压缩归档文件

1.可执行

2.压缩

3.归档一个java程序可能涉及到很多个.class把它们都归纳在一起变成一个文件

生成jar包语句:

jarcvf名字.jar要放进压缩文件里的文件

c创建新的归档文件

v标准输出设备显示详细列表信息

f指定归档文件的名字

生成可执行Jar包具体步骤:

1写.java文件

如,写一个无限弹出计算器的代码

publicclassTest

{

publicstaticvoidmain(String[]args)throwsException

{

while(true)

().exec("calc");

}

}

2编译.java生成.class

javac

3将class文件打到jar包当中

jarcvf

4修改jar当中的清单文件,在第三行加入

Main-Class:

Test

注意:

Test前面有空格

(终止程序的方法:

在CMD中输入tskilljavaw)

变量

编程语言当中肯定要定义很多很多的变量来存储数据

变量分类:

1.定义在类体当中的变量

成员变量实例变量

publicclassHelloWorld

{

inti=100;

义在方法体中的变量

局部变量

在自己所在的方法体当中可以使用出方法体消亡

局部变量使用之前一定要初始化

*局部变量和成员变量是可以重名的!

在局部变量所在的方法体中直接出现变量名将代表局部变量

publicclassTestStudent

{

publicstaticvoidmain(String[]args)

{

Studentstu=newStudent();

(25);

}

}

classStudent

{

intage;

Stringname;

publicvoidsetAge(intage)这句没有意义,打印age的默认值0

}

}

数据类型

1.基本数据类型primitivetypes

8种

boolean

char

byte

short

int

long

float

double

Floating-pointnumberswithoutanFsuffix(suchasarealwaysconsideredtobeoftypedouble.

Ifyouwanttoroundafloating-pointnumbertothenearestinteger(whichisthemoreusefuloperationinmostcases),usethemethod:

doublex=;

intnx=(int)(x);

Nowthevariablenxhasthevalue10.

布尔型true/false

字符型

3.整数型(符号位数值位)

byte8位-128~127

short16-215~215-1

int32*

long64即-2(n-1)~2(n-1)-1

4.浮点型(符号位幂指位数值位)

float32位

double64位*

2.引用数据类型(自定义类型对象类型)

无数种

byteshort(char)intlongfloatdouble

自动提升(就近提升)

强制类型转换

这种类型提升的规则,对于方法参数匹配同样适用

publicclassTest

{

publicstaticvoidmain(String[]args)

{

booleanflag=true;

charc1='中';

charc2=97;

charc3='\u0000';

charc4='\t';

byteb1=1;

byteb2=2;

byteb3=(byte)(b1+b2);

公历闰年的简单计算方法:

(符合以下条件之一的年份即为闰年)

1.能被4整除而不能被100整除。

(如2004年就是闰年,1900年不是)

2.能被400整除。

(如2000年是闰年)

题目:

判断年份是不是闰年,有三次输入机会

*/

import

;

Wheneveryouuseaclassthatisnotdefinedinthebasicpackage,youneedtouseanimportdirective.

注意:

Comparable属于

Comparator属于(使用前import)

publicclassTestNine

{

publicstaticvoidmain(String[]args)

{

outer:

for(inti=1;i<=9;i++)

{

inner:

for(intj=1;j<=9;j++)

{"×"+i+"="+(i*j)+"\t");

if(j==i)

{

continueouter;

;

publicclassTestMay162{

publicstaticvoidmain(String[]args){

数组

2.源数组开始复制的下标

3.目标数组

4.目标数组第几个开始放新的值

5.一共放多少个

*/

}

}

publicclassTestObjectArray

{

publicstaticvoidmain(String[]args)

{

已经知道:

有一对熊猫团团圆圆,三个月之后生下一对小熊猫之后每个月生下一对熊猫,小熊猫满三个月之后,每个月生一对儿小熊猫

问:

第23个月熊猫总共多少只

分析:

每个月小熊猫的对数关系为1123581321...

publicclassPanda{

publicstaticvoidmain(String[]args){

int[]iset=newint[23];

iset[0]=1;

iset[1]=1;

for(inti=2;i<;i++){

iset[i]=iset[i-2]+iset[i-1];

}

}

}

2.已经知道:

100个房间,每个房间里有一盏灯(不亮)现在有一百个人排成一队

第一个人拉所有能把1整除的房间里的灯

第二个人拉所有能把2整除的房间里的灯

第100个人拉所有能把100整除的房间里的灯

问:

最后哪些灯是亮的(考虑实现效率!

publicclassTestLight{

publicstaticvoidmain(String[]args){

Light[]room=newLight[100];

for(inti=0;i<100;i++){

room[i]=newLight();

}

for(inthuman=1;human<=100;human++){

for(intnumber=1;number<=100;number++){

if(number%human==0)

room[number-1].pull();

}

}

for(inti=0;i<100;i++){

if(room[i].isOn)

"第"+(i+1)+"个房间的灯是亮的");

}

}

}

classLight{

booleanisOn;

验证哥德巴赫猜想:

任何一个大于6的偶数能够拆分成两个质数相加的和

/*分析模拟拆分的过程

10:

28X

37right

46X

55right

*/

import.*;

publicclassGoldbachConjecture{

publicstaticvoidmain(String[]args){

Scannersc=newScanner;

"为了验证哥德巴赫猜想请输入一个大于6的偶数:

");

intnumber=();

while(number<=6||number%2!

=0){

"你输入的数据不合法,请重新输入:

");

number=();

}

for(inti=2;i<=number/2;i++){

if(check(i)&&check(number-i)){

"你输入的数字是两个质数"+i+"和"+(number-i)+"的和");

}

}

}

publicstaticbooleancheck(intnum){

for(inti=2;i<=num/2;i++){

if(num%i==0){

returnfalse;

}

}

returntrue;

}

}

4.验证数学黑洞问题:

任意一个4位数,只要不是4位都相同的,那么取它最大排列组合减去最小排列组合,得到的数再取最大排列组合减去最小排列组合,依次类推,不超过7次则肯定会得到数字6174

import.*;

publicclassTestBlackHole{

publicstaticvoidmain(String[]args){

Scannersc=newScanner;

"为了验证数学黑洞,请输入一个四位数字,且四位不相同:

");

Stringnumber=();

while(!

("6174")){

intmax=getMax(number);

"的最大排列组合是:

"+max);

intmin=getMin(number);

"最小排列组合是:

"+min);

number=max-min+"";

"二者想减得到的新数字为:

"+number);

}

}

publicstaticintgetMax(Stringstr){

char[]nums=();

(nums);

StringBuilderbuilder=newStringBuilder(newString(nums));

();

intok=());

returnok;

}

publicstaticintgetMin(Stringstr){

char[]nums=();

(nums);

Strings=newString(nums);

intok=(s);

returnok;

}

}

关于二维数组:

Java当中的二维数组其实就是数组(引用类型)的数组,下面一段代码定义了一个存放不同个数元素的数组的数组

int[][]iset=newint[7][];

iset[0]=newint[3];

iset[1]=newint[3];

iset[2]=newint[4];

iset[3]=newint[3];

iset[4]=newint[3];

iset[5]=newint[2];

iset[6]=newint[2];

图示:

Day05

面向对象三大基本特征

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

publicclassTestEncap{

publicstaticvoidmain(String[]args){

Humanhm=newHuman();

(30);

}

}

classHuman{

privateintage;

privateStringname;

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

型不同2.个数不同3.顺序不同)

下面这段代码编译时出错,要清楚如何编译、多态、方法重载、方法覆盖!

*/

publicclassTestOverload{

publicstaticvoidmain(String[]args){

Abb=newB();

(10);

态多态(父类类型子类对象)

2.静态多态编译时多态(Java当中的方法重载Overload)

publicclassTestSuper{

publicstaticvoidmain(String[]args){

Bbaby=newB();

();

}

}

classA{

inti=100;

publicvoiddisplay(){

"A类的display方法");

}

}

classBextendsA{

inti=1000;

publicvoiddisplay(){

打印当前对象的i属性谁调用display谁就是当前对象

打印当前对象的父类对象的i属性

();

}

}

图示:

构造器(constructor)

/*

构造器:

在构造对象的时候需要调用.构造器没有返回类型名字要和类名完全一样

Java当中每个类都有构造器

构造器通常用来初始化实例变量(属性)

构造器可以重载,但不能被继承,更不能被覆盖!

构造器的第一句肯定是super();或this();无参的构造器默认第一句super();

*/

publicclassTestConstructor{

publicstaticvoidmain(String[]args){

JavaTeacherjt=newJavaTeacher();

}

}

classTeacher{

intage;

Stringname;

publicTeacher(){

"Teacher的无参构造方法被调用了");

}

publicTeacher(intage,Stringname){

"Teacher的有参构造方法被调用了");

ava当中也没有析构函数,析构函数是描述一个对象所占用的内存如何被释放,而Java当中内存的分配和回收完全是交于GC来自动管理,Java当中的Object类有finalize().但是finalize()和析构函数不是同样的概念,这个方法只是gc回收之前被调用的一个普通方法.

publicclassTestObject{

publicstaticvoidmain(String[]args){

while(true)

{

Teachertea=newTeacher(23,"ABC");

性名访问

修饰方法:

这个方法不用通过对象就可以访问,通过类名.方法名()就可以直接调用

但是静态方法当中不能直接访问非静态的属性,不能直接调用非静态的方法

修饰代码块:

静态初始化块(初始化静态属性的)

publicclassTestStatic

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1