最全的java学习笔记必看.docx

上传人:b****8 文档编号:11183281 上传时间:2023-02-25 格式:DOCX 页数:40 大小:1.13MB
下载 相关 举报
最全的java学习笔记必看.docx_第1页
第1页 / 共40页
最全的java学习笔记必看.docx_第2页
第2页 / 共40页
最全的java学习笔记必看.docx_第3页
第3页 / 共40页
最全的java学习笔记必看.docx_第4页
第4页 / 共40页
最全的java学习笔记必看.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

最全的java学习笔记必看.docx

《最全的java学习笔记必看.docx》由会员分享,可在线阅读,更多相关《最全的java学习笔记必看.docx(40页珍藏版)》请在冰豆网上搜索。

最全的java学习笔记必看.docx

最全的java学习笔记必看

%

Java学习笔记

:

~

;

^

&

'

|

Java技术基础

编程语言

/

机器语言:

01在硬件直接执行

汇编语言:

助记符

高级语言:

(Java运行比C/C++慢)

1)面向过程的高级语言:

程序设计的基本单位为函数,如:

C/C++语言。

2)面向对象的高级语言:

程序设计的基本单位为类,如:

Java、C#。

Java的特点

平台无关性、简单性、面向对象、健壮性、多线程、自动内存管理。

平台无关性:

指Java语言平台无关,而Java的虚拟机却不是,需要下载对应平台JVM虚拟机的。

自动内存管理:

对临时存储的数据自动进行回收,释放内存。

如:

引用类型的变量没有指向时,被回收;程序执行完后,局部变量被回收。

Java开发环境

JavaDevelopementKit——Java开发工具包,简称JDK,是由Sun公司提供的一个免费的Java开发工具,编程人员和最终用户可以利用这个工具来编译、运行Java程序。

目前版本有、、、、、()、()、()。

JDK结构:

JDK

|--开发工具(Tools)命令:

java、javac、jar、rmic...

|--JRE(Java基本运行环境)

|--系统API库,系统类库

|系统带来的标准程序库,标准API

|--JVMjava虚拟机

java语言的执行环境

Java开发环境配置

安装完JDK之后,不能立刻使用,需要设置环境变量:

1)设置PATH:

D:

\Java\(指向JDK中bin文件夹,有各种编译命令)。

2)CLASSPATH:

告诉Java程序去哪里查找第三方和自定义类,如果.class文件和类源文件在同一文件夹内,则不需要配置classpath,后续有包,则需要。

A.Windows:

在命令行执行

>

setCLASSPATH=E:

\workspace\1304\bin(临时环境配置)

java

注意事项:

E:

\setclasspath=c:

\(不加分号就不找当前路径)

=.;c:

\;d:

\;(先找classpath,若无,再找当前路径)

C、D两盘有同名.class文件,classpath设置为D盘,而命令行窗口当前盘符为C盘,则JVM现找classpath路径,后找当前路径。

B.Linux:

在控制台执行

①设置CLASSPATH环境变量,指向package所在的目录,一般是项目文件夹中的bin目录。

?

②执行java(包名必须写)。

exportCLASSPATH=/home/soft01/workspace/1304/bin(临时环境配置)

java

java-cp/home/soft01/workspace/1304/bin(二合一)

注意事项:

Windows根目录是反斜线:

\

Linux根目录是斜线:

/

Linux命令与相关知识

?

1)Linux无盘符,只有一个根目录(root)

2)终端==控制台==命令行窗口

3)pwd:

打印当前工作目录,显示当前工作目录的位置

4)ls:

列表显示目录内容,默认显示当前目录内容

5)cd:

改变当前工作目录;cd后不加参数=返回home文件夹;cd~:

返回home;

cd/:

切换到根目录;cd..:

返回上一层目录(相对的);

6)mkdir:

创建文件夹(目录)注意:

目录==文件夹

7)rm:

删除文件;rmxxxx:

可删多个文件;

]

rm–rfxx:

-为减号,r表递归,f表强制

8)catxx:

显示文本文件内容

9)启动Java开发工具:

cd/opt/eclipse./eclipse.表当前目录下

10)绝对路径:

/home(以/开始为绝对路径,相对于根目录)

相对路径:

home(相对于当前工作目录)

11)home(用户主目录,用户的家):

/home/username如:

/home/soft01

12)主目录(home):

有最大访问权限:

什么都能干,增删改查、建目录等

其他地方:

一般只能查看,不能增删改查、创建目录等

Eclipse/Myeclipse程序结构

Project项目文件

|--src源文件

||--Package包

||--.java源文件

|--bin

|--Package包

|--.class字节码程序

注意事项:

消耗少,最稳定

Java语言基础

基础语言要素

1)标识符:

给类、方法、变量起的名字

A.必须以字母或下划线或$符号开始,其余字符可以是字母、数字、$符号和下划线。

B.只能包含两个特殊字符,即下划线_和美元符号$。

不允许有任何其他特殊字符。

C.标识符不能包含空格。

D.区分大小写。

2)关键字:

只有系统才能用的标识符

注意事项:

true、false、null不是关键字!

是字面量。

main不是关键字!

但是是一个特殊单词,可以被JVM识别,主函数是固定格式,作为程序的入口。

注释:

单行注释:

0*2^10(2次方)=*2^11(3次方)=.10*2^1010(10次方)

尾数:

.10指数:

1010基数:

2

浮点数字面量默认都为double类型,所以在定义的float型数据后面加F或f;double类型可不写后缀,但在小数计算中一定要写D或。

float的精度没有long高,有效位数(尾数)短。

float的范围大于long指数可以很大。

浮点数是不精确的,不能对浮点数进行精确比较。

3)一种字符类型(char):

char:

16位,是整数类型,用单引号括起来的1个字符(可以是一个中文字符),使用Unicode码代表字符,0~2^16-1(65535)。

注意事项:

不能为0个字符。

转义字符:

\n换行\r回车\tTab字符\"双引号\\表示一个\

\

两字符char中间用“+”连接,内部先把字符转成int类型,再进行加法运算,char本质就是个数!

二进制的,显示的时候,经过“处理”显示为字符。

4)一种布尔类型(boolean):

true真和false假。

5)类型转换:

char-->

自动转换:

byte-->short-->int-->long-->float-->double

强制转换:

①会损失精度,产生误差,小数点以后的数字全部舍弃。

②容易超过取值范围。

常量和变量

变量:

内存中一块存储空间,可保存当前数据。

在程序运行过程中,其值是可以改变的量。

1)必须声明并且初始化以后使用(在同一个作用域中不能重复声明变量)!

2)变量必须有明确类型(Java是强类型语言)。

3)变量有作用域(变量在声明的地方开始,到块{}结束)。

变量作用域越小越好。

4)局部变量在使用前一定要初始化!

成员变量在对象被创建后有默认值,可直接用。

5)在方法中定义的局部变量在该方法被加载时创建。

常量:

在程序运行过程中,其值不可以改变的量。

注意事项:

字面量、常量和变量的运算机制不同,字面量、常量由编译器计算,变量由运算器处理,目的是为了提高效率。

eg:

小于32位数的字面量处理

byteb1=1;byteb2=3;

注意事项:

int类型指:

byte、short、int,只能写long类型,要写也必须强转成int类型;而byte、short为自动转换成int。

swtich-case:

若case中无符合的数,并且default写在最前(无break时),则为顺序执行,有break或}则退出。

swtich-case:

若case中无符合的数,并且default写在最后,则执行default。

swtich-case:

若case中有符合的数,并且default写在最后,并且default前面的case没有break时,default也会执行。

2)循环控制语句

①for:

最常用,用在与次数有关的循环处理,甚至只用for可以解决任何循环问题。

注意事项:

for中定义的用于控制次数的循环变量,只在for中有效,for结束则循环变量被释放(回收)。

②while:

很常用,用在循环时候要先检查循环条件再处理循环体,用在与次数无关的情况。

如果不能明确结束条件的时候,先使用while(true),在适当条件使用if语句加break结束循环。

③do-while:

在循环最后判断是否结束的循环。

如:

使用while(true)实现循环的时候,结束条件break在while循环体的最后,就可以使用do-while。

do-while的结束条件经常是“否定逻辑条件”,不便于思考业务逻辑,使用的时候需要注意。

可以利用while(true)+break替换。

④循环三要素:

A.循环变量初值B.循环条件C.循环变量增量(是循环趋于结束的表达式)

⑤for和while循环体中仅一条语句,也要补全{},当有多条语句,且不写{}时,它们只执行紧跟着的第一条语句。

⑥循环的替换:

while(布尔表达式){}等价for(;布尔表达式;){}

while(true){}等价for(;;)

while(true){}+break替换do{}while(布尔表达式);

for(;;)+break替换do{}while(布尔表达式);

3)跳转控制语句

continue:

退出本次循环,直接执行下一次循环

break:

退出所有循环

数组

&

类型一致的一组数据,相当于集合概念,在软件中解决一组,一堆XX数据时候使用数组。

1)数组变量:

是引用类型变量(不是基本变量)引用变量通过数组的内存地址位置引用了一个数组(数组对象),即栓到数组对象的绳子。

eg:

数组变量的赋值

int[]ary=newint[3];quals(cmd)比("1")要好。

方法三要素

方法:

method(函数function=功能)y=f(x)

1)方法的主要三要素:

方法名、参数列表、返回值。

2)什么是方法:

一个算法逻辑功能的封装,是一般完成一个业务功能,如:

登录系统,创建联系人,简单说:

方法是动作,是动词。

3)方法名:

一般按照方法实现的功能定名,一般使用动词定义,一般使用小写字母开头,第二个单词开始,单词首字母大写。

如:

createContact()。

4)参数列表:

是方法的前提条件,是方法执行依据,是数据。

如:

login(Stringid,Stringpwd),参数的传递看定义的类型及顺序,不看参数名。

5)方法返回值:

功能执行的结果,方法必须定义返回值,并且方法中必须使用return语句返回数据;如果无返回值则定义为void,此时return语句可写可不写;返回结果只能有一个,若返回多个结果,要用数组返回(返回多个值)。

注意事项:

递归调用:

方法中调用了方法本身,用递归解决问题比较简练,只需考虑一层逻辑即可!

但是需要有经验。

一定要有结束条件!

如:

f

(1)=1;递归层次不能太深。

总之:

慎用递归!

插入排序

将数组中每个元素与第一个元素比较,如果这个元素小于第一个元素,则交换这两个元素循环第1条规则,找出最小元素,放于第1个位置经过n-1轮比较完成排序。

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

]

intk=arr[i];1)开始令low=0(指向3),high=7(指向88),则mid=3(指向36)。

因为k

2)令新的high=mid-1=2(指向24),而low=0(指向3)不变,则新的mid=1(指向12)。

此时k>mid,故确定应在后半段中查找。

3)令新的low=mid+1=2(指向24),而high=2(指向24)不变,则新的mid=2,此时k=arr[mid],查找成功。

如果要查找的数不是数列中的数,例如k=25,当第四次判断时,k>mid[2],在后边半段查找,令low=mid+1,即low=3(指向36),high=2(指向24)出现low>high的情况,表示查找不成功。

Java系统API方法调用

Arrays类,是数组的工具类,包含很多数组有关的工具方法。

如:

1)toString()连接数组元素为字符串,方便数组内容输出。

2)equals比较两个数组序列是否相等。

-

3)sort()对数组进行排序,小到大排序。

4)binarySearch(names,"Tom")二分查找,必须在有序序列上使用。

二进制基础

1)计算机中一切数据都是2进制的!

基本类型,对象,音频,视频。

2)10进制是人类习惯,计算按照人类习惯利用算法输入输出。

"10"-算法转化->1010

(2)1010-算法转化->"10"

3)16进制是2进制的简写,16进制就是2进制!

4)计算机硬件不支持正负号,为了解决符号问题,使用补码算法,补码规定高位为1则为负数,每位都为1则为-1,如11111111=-1=0xff

5)二进制数右移>>:

相当于数学/2(基数),且正数高位补0,负数高位补1;二进制字左移<<:

相当于数学*2(基数),且低位补0;二进制数无符号右移>>>:

相当于数学/2(基数),且不论正负,高位都补0。

6)注意掩码运算:

把扩展后前面为1的情况除去,与0xff做与运算。

eg1:

二进制计算

intmax=0x7fffffff;longl=max+max+2;l);

和this()

Cellc=newCell();+","+;

classCell{intx;inty;

publicCell(){this(1,1);

Foo);lass类进行初始化。

③在堆内存中开辟空间,分配内存地址,栈内存中开辟空间也就有了。

{

④在堆内存中建立对象的特有属性,并进行默认(隐式)初始化。

⑤对属性进行显式初始化。

⑥对对象进行构造代码块初始化。

⑦对对象进行对应的构造器初始化。

⑧将内存地址赋给栈内存中的P变量。

final

最终的,可以修饰:

类、方法、变量(成员变量和局部变量)。

1)final修饰的类:

不能再继承。

2)final修饰的方法:

不能再重写。

3)final的方法和类,阻止了动态代理模式!

动态代理模式广泛的应用在:

SpringHibernateStruts2

4)企业编程规范:

不允许使用final的方法和类!

5)final的变量:

final变量只能初始化一次(赋值一次,且方法中不能有给final变量赋值的语句!

因为方法可被调用多次!

),不能再修改!

也可在方法的参数列表中添加final。

eg1:

final的局部变量

finalinta;a=5;宏观说:

字面量和常量都称为常量!

多态

继承体现了多态:

父类型变量可以引用各种各样的子类型实例,也可接收子类对象。

~

个体的多态:

父类型的子类型实例是多种多样的。

行为的多态:

父类型定义方法被子类重写为多种多样的,重载也是多态的方法。

1)千万不能出现将父类对象转成子类类型,会造型异常!

2)多态前提:

必须是类与类之间有关系。

要么继承,要么实现。

通常还有一个前提:

存在覆盖。

3)多态的好处:

多态的出现大大的提高程序的扩展性。

4)多态的弊端:

虽然提高了扩展性,但是只能使用父类的引用访问父类中的成员。

5)在多态中成员函数的特点:

①在编译时期:

参阅引用型变量所属的类中是否有调用的方法。

如果有,编译通过,如果没有编译失败。

②在运行时期:

参阅对象所属的类中是否有调用的方法。

③简单总结就是:

成员方法在多态调用时,编译看左边,运行看右边。

6)在多态中,成员变量的特点:

无论编译和运行,都参考左边(引用型变量所属的类)。

7)在多态中,静态成员方法和属性的特点:

无论编译和运行,都参考做左边。

8)父类引用指向子类对象,当父类想使用子类中特有属性、方法时,要向下转型。

抽象类

抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用、更加大众化的类,就叫抽象类。

1)abstract关键字可以修饰类、方法,即抽象类和抽象方法。

}

2)抽象类可以有具体的方法,或者全部都是具体方法,但一个类中只要有一个抽象方法,那么这个类就是抽象类,并且必须用abstract修饰类。

3)抽象类可以被继承,则子类必须实现抽象类中的全部抽象方法,否则子类也将是抽象类。

抽象类也可主动继承实体类。

4)抽象类不能实例化,即不能用new生成实例。

5)可以声明一个抽象类型的变量并指向具体子类的对象。

6)抽象类可以实现接口中的方法。

7)抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象。

接口

interface差不多==abstractclass

1)|

2)接口是likea:

“像”我中的一种,是继承体系之外的,用于功能扩展!

想扩展就实现,不想就不用实现。

3)接口中只能声明抽象方法和常量且声明格式都是固定的,只不过可以省略。

eg:

接口中声明常量和抽象方法的格式是固定的

interfaceRunner{

/*publicabstractfinal*/intSPEED=100;ewInner();

5)当内部类在成员位置上,就可以被成员修饰符所修饰。

比如private:

将内部类在外部类中进行封装。

6)静态内部类:

被static修饰后就具备了静态的特性。

当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限。

①在外部其他类中,如何直接访问static内部类的非静态成员呢

~

new().function();

②在外部其他类中,如何直接访问static内部类的静态成员呢

注意事项:

当内部类中定义了静态成员,该内部类必须是static的。

当外部类中的静态方法访问内部类时,内部类也必须是static的。

7)内部类想调用外部类的成员,需要使用:

外部类名.this.成员,即OutterClassName.this表示外部类的对象。

如果写this.成员==成员,调用的还是内部类的成员(属性或方法)。

8)Timer和TimerTask:

继承TimerTask重写run()方法,再用Timer类中的schedule方法定时调用,就能自动启用run()(不像以前似的要用.XXX调用)。

eg:

内部类

classXoo{Timertimer=newTimer();

publicvoidstart(){

(newMyTask(),0,1000);quals方法去和变量进行比较,即:

if("Hello".equals(str))因为这样不会产生空指针异常。

而反过来用,即:

if("Hello"))则我们不能保证变量不是null,若变量是null,我们在调用其equals方法时会引发空指针异常,导致程序退出。

若都为变量则if(str!

=null&&(str1))也可。

4)String另一个特有的equals方法:

euqalsIgnoreCase,该方法的作用是忽略大小写比较字符串内容,常用环境:

验证码。

if("hello".equalsIgnoreCase(str))。

5)String的基本方法:

①StringtoLowerCase():

返回字符串的小写形式。

如:

()

②StringtoUpperCase():

返回字符串的大写形式。

如:

()

③Stringtrim():

去掉字符串两边的空白(空格\t\n\r),中间的不去。

如:

()

④booleanstartsWith():

判断字符串是否以参数字符串开头。

如:

("s")

⑤booleanendsWith():

判断字符串是否以参数字符串结尾。

如:

("s")

⑥intlength():

返回字符串字符序列的长度。

如:

()

eg:

如何让HelloWorld这个字符串以hello开头成立

if().startsWith("hello"))ength());

StringcharsetName):

通过使用指定的charset解码指定的byte数组,构造一个新的String。

如:

Stringstr=newString(bs,"UTF-8");

10)split方法(拆分):

字符串的拆分。

String[]split(Stringregex):

参数regex为正则表达式,以regex所表示的字符串为分隔符,将字符串拆分成字符串数组。

其中,regex所表示的字符串不被保留,即不会存到字符串数组中,可理解为被一刀切,消失!

eg:

对图片名重新定义,保留图片原来后缀

Stringname="";String[]nameArray=("\\.");

特殊含义,所以用\\.转义

"数组长度:

"+;长度为0

任意字符都切一刀,都被切没了

StringnewName="3."+nameArray[1];

"新图片名:

"+newName);

注意事项:

分隔符放前、中都没事,放最后将把无效内容都忽略。

{

Stringstr="123,456,789,456,,,";

String[]array=(",");ppend("好好学习").append("天天向上");

{

^

|

@

4)月里边的天---号;

星期里的天---星期几

年里的天

@

Calendarcalendar=();intyear=;

intmonth=;

intday=;

1)"年"+(month+1)+"月"+day+"日");

~

ength()+"位");Collection集合框架

在实际开发中,需要将使用的对象存储于特定数据结构的容器中。

而JDK提供了这样的容器——集合框架,集合框架中包含了一系列不同数据结构(线性表、查找表)的实现类。

1)Collection常用方法:

①intsize():

返回包含对象个数。

②booleanisEmpty():

返回是否为空。

③booleancontains(Objecto):

判断是否包含指定对象。

④voidclear():

清空集合。

⑤booleanadd(Ee):

向集合中添加对象。

⑥booleanremove(Objecto):

从集合中删除对象。

⑦booleanaddAll(Collectionc

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

当前位置:首页 > 经管营销 > 金融投资

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

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