Java知识总结 完整版Word文件下载.docx

上传人:b****5 文档编号:21568676 上传时间:2023-01-31 格式:DOCX 页数:72 大小:47.96KB
下载 相关 举报
Java知识总结 完整版Word文件下载.docx_第1页
第1页 / 共72页
Java知识总结 完整版Word文件下载.docx_第2页
第2页 / 共72页
Java知识总结 完整版Word文件下载.docx_第3页
第3页 / 共72页
Java知识总结 完整版Word文件下载.docx_第4页
第4页 / 共72页
Java知识总结 完整版Word文件下载.docx_第5页
第5页 / 共72页
点击查看更多>>
下载资源
资源描述

Java知识总结 完整版Word文件下载.docx

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

Java知识总结 完整版Word文件下载.docx

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的关键字保留

程序执行过程:

内存

硬盘

heap堆

new出来的东西

代码

操作系统

程序

程序

stack栈

局部变量

 

datasegment

静态变量

字符串常量

codesegment

存放代码

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

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

Java数据类型的划分

数值型

浮点类型(float、double)

字符型(char)

基本数据类型

数组

接口(interface)

布尔型(boolean)

引用数据类型

数据类型

类(class)

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

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

charc=‘\u0061’;

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

类型

占用存储空间

数值范围

1字节

-27~27-1

2字节

-215~215-1

4字节

-231~231-1

8字节

-263~263-1

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

-3.403E38~3.403E38

-1.798E308~1.798E308

基本数据类型转换

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

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

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

byte,short,char->

int->

long->

float->

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

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

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

break&

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

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

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

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

多个case可以合并到一起

default可以省略,但不推荐

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

方法

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

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

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

递归调用

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

第3章面向对象编程

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

继承、组合、实现、多态

类=成员变量+方法

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

引用

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

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

类时静态的概念,代码区

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

对象

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

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

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

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

构造方法

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

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

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

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

命名规则

类名的首字母大写

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

运用驼峰标识

方法重载(overload)

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

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

在类的方法定义中使用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的成员

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

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

package&

为了解决类的命名冲突问题,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(包访问权限)

修饰符

类内部

同一个包

子类

任何地方

X

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

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

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

方法重写overwrite/override

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

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

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

在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的类不能被继承

接口interface

实现implements

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

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

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

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

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

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

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

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

第4章异常处理

异常指运行期出现的错误

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

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

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

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

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

异常的概念

publicvoidsomeMethod()throwssomeException{

if(someCondition()){

thrownewsomeException(“错误原因”);

………

构造并抛出异常对象

调用该方法时试图捕获异常

RuntimeException

Exception

Error

Throwable

定义处理异常的代码

try{

someMethod();

}catch(SomeExceptione){

//异常处理代码;

Error:

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

Exception:

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

RuntimeException:

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

·

Exception(injava.lang)

·

ClassNotFoundException

IOException

InterruptedException

·

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

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

NullPointerException

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

·

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

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

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

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

try代码段后跟有一个或多个catch代码段

每个catch代码段声明其能处理的一种特定类型的异常并提供处理的方法

当异常发生时,程序会终止当前的流程,根据获取异常的类型去执行相应的catch代码段

如果没有异常产生,所有的catch代码段都被略过不执行

finally段的代码无论是否发生异常都会执行

通常在finally语句中可以进行资源的清除工作,如:

关闭打开的文件,删除临时文件等

//可能抛出异常的语句

}catch(SomeException1e)

{

……

}catch(SomeException2e)

}finally{

捕获SomeException2时

语句1;

语句2;

catch(SomeException1e)

{……}

catch(SomeException2e)

finally{……}

后面的语句;

没有捕获到异常时

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

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

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

先逮小的,再逮大的

readFile()throwsIOException{……}

抛出

publicstaticmain(Strings){

try{method2()

}catch(IOExceptione){…}

method2()throwsIOException{

method2()

method1()throwsIOException{

readFile()

在一个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[][]=ne

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

当前位置:首页 > PPT模板 > 国外设计风格

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

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