完整word版Java知识总结完整版推荐文档.docx

上传人:b****8 文档编号:29975679 上传时间:2023-08-03 格式:DOCX 页数:85 大小:226.10KB
下载 相关 举报
完整word版Java知识总结完整版推荐文档.docx_第1页
第1页 / 共85页
完整word版Java知识总结完整版推荐文档.docx_第2页
第2页 / 共85页
完整word版Java知识总结完整版推荐文档.docx_第3页
第3页 / 共85页
完整word版Java知识总结完整版推荐文档.docx_第4页
第4页 / 共85页
完整word版Java知识总结完整版推荐文档.docx_第5页
第5页 / 共85页
点击查看更多>>
下载资源
资源描述

完整word版Java知识总结完整版推荐文档.docx

《完整word版Java知识总结完整版推荐文档.docx》由会员分享,可在线阅读,更多相关《完整word版Java知识总结完整版推荐文档.docx(85页珍藏版)》请在冰豆网上搜索。

完整word版Java知识总结完整版推荐文档.docx

完整word版Java知识总结完整版推荐文档

第1章Java概述

Java语言的特特点

一种面向对象的语言;一种平台无关的语言;一种健壮的语言,吸收了C/C++的优点,但去掉了其影响程序健壮性的部分(如:

指针、内存的申请与释放等)

Java的两种核心机制

Java虚拟机(JavaVirtualMachine)

垃圾回收机制(GarbageCollection)

源程序(*.java文件)→Java编译器→字节码(*.class文件)→类装载器→字节码校验器→解释器→操作系统平台

一次编译,随处运行

Java是一种解释型语言

JDK(JavaDevelopmentKit)软件开发工具包

JRE(JavaRuntimeEnvironment)运行时环境

开发需要JDK;用户只需JRE

PATH:

WINDOWS系统执行命令时要搜寻的路径(如javac.exe,java.exe)

CLASSPATH:

Java在编译和运行时要找的class所在路径(“.”代表当前路径)

java:

运行java程序

javac:

编译java程序

java–version

一个源文件最多只能有一个public类,其他类数量不限,源文件名必须与public类名一致

Java应用程序的执行入口时main()方法:

publicstaticvoidmain(String[]args){…}

Java语言中严格区分大小写

编译后,每一个类都对应一个class文件

第2章基础语法

标示符由字母、下划线”_”、美元符”$”或数字组成

标示符应以字母、下划线、美元符开头

Java标示符对大小写敏感,长度无限制,注意“见名知意”且不能与Java语言关键字重名

abstract

default

if

private

this

boolean

do

implements

protected

throw

break

double

import

public

throws

byte

else

instanceof

return

transient

case

extends

int

short

try

catch

final

interface

static

void

char

finally

long

strctfp

volatile

class

float

native

super

while

const

for

new

switch

null

continue

goto

package

synchronized

goto和const虽然未使用,但也被作为Java的关键字保留

程序执行过程:

程序

 

1.load到内存区2.找到main方法开始执行3.执行过程中的内存管理

数据类型

基本数据类型

引用数据类型

数值型

字符型(char)

布尔型(boolean)

整数类型(byte、short、int、long

浮点类型(float、double)

类(class)

数组

接口(interface)

Java数据类型的划分

 

 

boolean类型数据只允许取值true或false,不可以使用0或非0的整数值取代true和false,这点和c语言不同

Java字符采用Unicode编码,每个字符占两个字节,因而可以用十六进制编码形式表示,例:

charc=‘\u0061’;

Java语言的整型常量默认为int类型,声明long型常量可以后加l或L

类型

占用存储空间

数值范围

byte

1字节

-27~27-1

short

2字节

-215~215-1

int

4字节

-231~231-1

long

8字节

-263~263-1

Java浮点型常量默认为double型,声明float型需在数字后面加f或F

类型

占用存储空间

数值范围

float

4字节

-3.403E38~3.403E38

double

8字节

-1.798E308~1.798E308

基本数据类型转换

boolean类型不可以转换为其他的数据类型

整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则:

容量小的类型自动转换为容量大的类型:

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

byte,short,char之间不需要相互转换,他们三者在计算时首先会转换为int类型

可以将整型常量直接赋值给byte,short,char等类型变量,而不需要进行强制类型转换,只要不超过其表数范围

“+”除用于算术加法外,还可用于对字符串进行连接操作,“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接,当进行打印时,无论任何类型,都自动转换为字符串进行打印

break&continue

break语句用于终止某个语句块的执行。

用在循环语句中,可以强行退出循环

continue语句用在循环语句体中,用于终止某次循环过程,跳过循环体中continue语句下面未执行的循环,开始下一次循环过程

switch

小心case穿透,推荐使用break语句

多个case可以合并到一起

default可以省略,但不推荐

java中switch语句只能探测int类型值

方法

形参、实参、返回值、返回值类型

Java中进行函数调用中传递参数时,遵循值传递的原则:

基本类型传递的是该数据值本身,引用类型传递的是对象的引用,而非对象本身

递归调用

递归调用指在方法执行过程中出现该方法本身的调用

第3章面向对象编程

类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应具有的成员变量和方法,对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体,是该类的一个具体实例,在Java中“一切皆为对象”

继承、组合、实现、多态

类=成员变量+方法

成员变量系统可以对其自动初始化,局部变量不初始化会报错

引用

Java语言中除基本类型之外的变量类型都称之为引用类型(基本类型占一块内存,引用类型占两块内存)

Java中的对象时通过引用对其操作的

类时静态的概念,代码区

对象是new出来的,位于堆内存(动态分配内存用的),类的每个成员变量在不同的对象中都有不同的值(除了静态变量),而方法只有一份,执行的时候才占内存

对象

必须使用new关键字创建对象

同一类的每个对象有不同的成员变量存储空间(除了静态变量)

同一类的每个对象共享该类的方法

非静态方法时针对每个对象进行调用的(必须创建对象)

构造方法

使用new+构造方法创建一个新的对象

构造方法是定义在Java类中的一个用来初始化对象的函数

构造方法与类同名且没有返回值

当没有指定构造方法时,编译器为类自动添加形如类名(){}的构造方法

命名规则

类名的首字母大写

变量名和方法名的首字母小写

运用驼峰标识

方法重载(overload)

方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。

调用时根据不同的参数列表选择对应的方法

this

在类的方法定义中使用this关键字代表使用该类的对象的引用

有时使用this可以处理方法中成员变量和方法参数重名的问题

This可以看做是一个变量,它的值时当前对象的引用

publicclassLeaf{

intI=0;

Leaf(inti){this.i=i};

Leafincreament(){

i++;

returnthis;

}

voidprint(){System.out.println(“i=”+i);}

publicstaticvoidmain(String[]args){

Leafleaf=newLeaf(100);

leaf.increament().increament().print();

}

}

static

在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份

用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员

静态方法不再是针对某个对象调用,所以不能访问非静态成员

可以通过对象引用或类名(不需要实例化)访问静态成员或方法

package&import

为了解决类的命名冲突问题,Java引入的包(package)机制,提供类的多重类命名空间

package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包(若缺省该语句,则指定为无名包,裸体类)

Java编译器把包对应于文件系统的目录管理,package语句中,用“.”来指明包(目录)的层次,例:

packagecom.yao;则该文件中的类位于.\com\yao目录下

如果将一个类打包,则使用该类时,必须使用该类的全名(例如:

com.yao.MyClass),Java编译器才会找到该类

也可以使用import在文件的开头引入要使用的类,例:

importcom.yao.MyClass

可以不需要用import语句直接使用java.lang包中的类

访问位于同一个包中的类不需要引入

class文件的最上层包的父目录必须位于classpath下

JDK中主要的包介绍

java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能,使用时不需要引入(lang-language)

java.awt-包含了构成抽象窗口工具集(abstractwindowtoolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)

java.applet-包含了applet运行所需的一些类

-包含了与网络相关的操作的类

java.io-包含能提供多种输入/输出功能的类

java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数

java运行时所需的类位于jdk\jre\lib\rt.jar

打jar包,定位到需要打包的最上层的父路径

jar–cvfxxx.jar*.*(*.*指目录中所有文件夹打包)

jar包也可设为classpath变量

继承extends

通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)(包括private成员,拥有私有变量的所有权,但无使用权)

Java只支持单继承,不允许多继承,一个子类只能有一个基类,一个基类可以派生多个子类

访问控制

权限修饰符public、protected、private、default(包访问权限)

修饰符

类内部

同一个包

子类

任何地方

private

X

X

X

default

X

X

protected

X

public

对于class的权限修饰符只可以用public和default

public类可以在任意地方被访问

default类只可以被同一个包内的类访问

方法重写overwrite/override

在子类中可以根据需要对从基类中继承来的方法进行重写

重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型

重写方法不能使用比被重写方法更严格的访问权限

super

在Java类中使用super来引用基类的成分

继承中的构造方法

子类的构造过程中必须调用其基类的构造方法

子类可以再自己的构造方法中使用super(argument_list)调用基类的构造方法

使用this(argument_list)调用本类的另外的构造方法

如果调用super,必须写在子类构造方法的第一行

如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用调用基类无参数的构造方法

如果子类构造方法中既没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错

Object类

Object类是所有Java类的根基类

如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类

publicclassPerson{

}

等价于:

publicclassPersonextendsObject{

}

toString()

Object类中定义有publicStringtoString()方法,其返回值时String类型,描述当前对象的有关信息,返回一个字符串,该字符串由类名(对象是该类的一个实例)+“@”+此对象哈希码的无符号十六进制表示组成,即getClass().getName()+‘@’+Integer.toHexString(hashCode())

在进行String与其他类型数据的连接操作时(如:

System.out.println(“info”+person)),将自动调用该对象类的toString()方法

可以根据需要在用户自定义类型中重写toString()方法,建议所有子类都重新此方法

equals()

publicbooleanequals(Objectobj)

x.equals(y)对于任何非空引用值,当且仅当x和y引用同一个对象时,此方法返回true(x==y具有值true)

JDK提供了一些类,如String,Date等,重写了Object的equals()方法,调用这些类的equals()方法,x.equals(y),当x和y所引用的对象时同一类对象且属性内容相等时(并不一定时同一对象),返回true,否则返回false

建议重写

例子:

Strings1=newString(“Hello”);

Strings2=newString(“Hello”);

System.out.println(s1==s2);//false

System.out.println(s1.equals(s2));//true

对象转型(casting)

一个基类的引用类型变量可以“指向”其子类的对象

一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)

可以使用引用变量+instanceof+类名,来判断该引用变量所“指向”的对象是否属于该类或该类的子类

子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为乡下转型(downcasting),需强制转换

动态绑定和多态

动态绑定是指在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用其相应的方法

1.要有继承

2.要有重写

3.父类引用指向子类对象

抽象类

用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法

含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写

抽象类不能被实例化

抽象方法只需声明,而不需实现

final

final的变量的值不能被改变

final的方法不能被重写

final的类不能被继承

接口interface

实现implements

接口是抽象方法和常量值得定义的集合

从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含了常量和方法的定义,而没有变量和方法的实现

多个无关的类可以实现同一个接口

一个类可以实现多个无关的接口

与继承关系类似,接口与实现类之间存在多态性

接口中声明属性默认为publicstaticfinal的,也只能是publicstaticfinal的

接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的

接口可以继承其他的接口,并添加新的属性和抽象方法

第4章异常处理

异常指运行期出现的错误

所谓错误是指在程序运行的过程中发生的一些异常事件(如:

除0溢出、数组下标越界、所要读取的文件不存在)

Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出(throw)异常

publicvoidsomeMethod()throwssomeException{

if(someCondition()){

thrownewsomeException(“错误原因”);

}

………

}

构造并抛出异常对象

声明该方法可能抛出的异常

当Java运行时系统接收到异常对象时,会寻找处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常

异常的概念

 

 

Throwable

Error

Exception

RuntimeException

 

Error:

称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理

Exception:

所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕获

RuntimeException:

特殊的异常,如被0除、数组下标越界等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大,因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)

·Exception(injava.lang)

·ClassNotFoundException

·IOException

·InterruptedException

·RuntimeException

·ArithmeticException(当出现异常的运算条件时,抛出此异常。

例如,一个整数“除以零”时,抛出此类的一个实例)

·NullPointerException

·IndexOutOfBoundsException(指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。

·ArrayIndexOutOfBoundsException(用非法索引访问数组时抛出的异常。

如果索引为负或大于等于数组大小,则该索引为非法索引。

·StringIndexOutOfBoundsException(此异常由String方法抛出,指示索引或者为负,或者超出字符串的大小。

对诸如charAt的一些方法,当索引等于字符串的大小时,也会抛出该异常。

finally

 

 

 

getMessage()方法,用来得到有关异常事件的信息

printStackTrace()方法,用来跟踪异常事件发生时执行堆栈的内容

readFile()throwsIOException{……}

method1()throwsIOException{

readFile()

}

method2()throwsIOException{

method2()

}

publicstaticmain(Strings){

try{method2()

}catch(IOExceptione){…}

}

抛出

抛出

抛出

在一个try语句块中,基类异常的捕获语句不可以写在子类异常捕获语句的上面,否则会有编译错误,子类异常不会被捕获

先逮小的,再逮大的

在一个try语句块中,基类异常的捕获语句

使用自定义的异常

1.通过继承java.lang.Exception类声明自己的异常类

2.在方法适当的位置生成自定义异常的实例,并用throw语句抛出

3.在方法的声明部分用throws语句声明该方法可能抛出的异常

classMyExceptionextendsException{

privateintid;

publicMyException(Stringmessage,intid){

super(message);

this.id=id;

}

publicitgetId(){

returnid;

}

}

注意:

重写方法需要抛出与原方法所抛出异常类型一致的异常货不抛出异常

第5章数组

数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化

typevar[];或type[]var;

Java语言中声明数组时不能指定其长度(数组中元素的个数)例:

inta[5];//非法

Java中使用关键字new创建数组对象,格式为:

数组名=new数组元素的类型[数组元素的个数]

注意:

元素为引用数据类型的数组中的每一个元素都需要实例化

动态初始化:

数组定义与为数组元素分配空间和赋值的操作分开进行

静态初始化:

在定义数组的同时就为数组元素分配空间并赋值

每一个数组都有一个属性length指明它的长度,例:

a.length的值为数组a的长度(元素个数)

Java中多维数组的声明和初始化应按从高维到低维的顺序进行

例如:

inta[][]=newint[3][];

a[0]=newint[2];

a[1]=newint[4];

a[2]=newint[3];

//interror[][]=newint[][4];是错误的

数组的拷贝

使用java.lang.System类的静态方法

publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)

可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组dest从destPos项开始的length个位置

如果源数据数目超出目标数组边界会抛出IndexOutOfBoundsException异常

第6章常用类

String

Java.lang.String类代表不可变的字符序列字符串是常量;它们的值在创建之后不能更改。

字符串缓冲区支持可变的字符串。

因为String对象是不可变的,所以可以共享。

例如:

Stringstr="abc";

等效于

chardata[]={'a','b','c'};

Stringstr=newString(data);

Java语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。

字符串串联是通过StringBuilder(或StringBuffer)类及其append方法实现的。

字符串转换是通过toString方法实现的,该方法由Object类定义,并可被Java中的所有类继承。

“xxxx”为该类的一个对象

String类的常见构造方法:

String(Stringoriginal):

创建一个String对象为original的拷贝

String(char[]value):

用一个字符数组创建一个String对象

String(char[]value,i

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

当前位置:首页 > PPT模板 > 商务科技

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

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