Java 复习提纲.docx
- 文档编号:17007110
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:37
- 大小:31.66KB
Java 复习提纲.docx
《Java 复习提纲.docx》由会员分享,可在线阅读,更多相关《Java 复习提纲.docx(37页珍藏版)》请在冰点文库上搜索。
Java复习提纲
Java复习提纲
按照章节组织顺序,列出以下复习要点:
第一章Java语言概述
1.2节
1、Java的六个特点
简单,面向对象,平台无关,多线程,安全,动态
2、Java的平台无关性原理,为什么可以“一次编写,到处运行”?
在一个计算机上编译得到的字节码文件可以复制到任何一个安装了java运行环境的计算机上直接使用。
字节码由java虚拟机负责将字节码翻译成本地计算机的机器码,并将机器码交给本地的操作系统来运行。
3、理解JDK、JRE的概念和作用
JDK:
JAVA开发包(JAVASEDevelopmentToolkit),它包含了JRE,还包含了很多开发工具及资源,比如javac,javadoc,用语程序打包的jar等。
JRE:
JAVA运行时环境(JAVARuntimeEnvironment),它主要由三部分组成:
类加载器、字节码校验器、运行时执行引擎。
它除了包含JVM,还包括了其他一些底层的类库(API)。
1.4节
1、Java程序的开发步骤
编写源文件
编译java源程序
运行java程序
2、编译器javac.exe和解释器java.exe的作用
编译器javac.exe:
编译源文件,得到字节码文件
解释器java.exe:
解释执行字节码文件
3、源文件和字节码文件的后缀名
源文件:
*.java字节码文件:
*.class
1.5节
1、区分主类和public类,同一个源文件中的public类命名规则?
(1.5.1)
一个java应用程序的源文件必须有一个类含有publicstaticvoidmain(Stringargs[])方法,称这个类是应用程序的主类。
如果源文件中有多个类,那么只能有一个类是public类;如果有一个类是public类,那么源文件的名字必须与这个类名字完全相同,扩展名是.java。
2、掌握在当前目录下编译、运行例1.1的过程(1.5.2,1.5.3)
第二章基本类型
2.1节
1、标识符的概念,能区分合法的标识符
用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标示符。
2.2节
1、4大基本数据类型及具体分组(8种)
逻辑类型:
boolean
整数类型:
byte、short、int、long
字符类型:
char
浮点类型:
float、double
2、逻辑类型常量有哪些?
True和false
3、4种整数类型各自所占字节个数,及它们的取值范围
Int:
4个字节,占32位。
取值范围:
-231—231-1
Byte:
1个字节,占8位。
取值范围:
-27—27-1
Short:
2个字节,占16位。
取值范围:
-215—215-1
Long:
8个字节,占64位。
取值范围:
-263—263-1
4、字符类型常量的声明,常见转义字符及其如何使用在字符串中,字符类型的表示范围及其与int类型的显示转换(例2.1)
Char型变量取值范围0—65535
5、浮点类型(float和double)常量与变量的声明规则,注意后缀“f/F”、“d/D/缺省”的使用
6、基本数据类型中高精度向低精度的强制转换,原因与实现?
高精度向低精度的强制转换必须使用显示类型转换运算。
2.4节
1、数组是第一个介绍的引用类型数据,需要通过new语句完成数组的创建。
所谓的“引用”指的就是栈内存中变量被赋值的地址,该地址是数组或对象在堆内存中的地址。
2、数组中length的使用和例2.4
A.length
第三章运算符、表达式和语句
3.1节
1、自增自减运算符
2、instanceof运算符:
左面的操作元是一个对象,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false
3.2节—3.6节
1、语句的分类及作用
方法调用语句
表达式语句
复合语句
空语句
控制语句
Package语句和import语句
2、switch开关语句中”表达式”的值所满足的类型以及break的注意事项
3、在循环语句中(for/while等)break和continue关键字的用法(读程题)
第四章类与对象
特别说明:
第四、五章涉及了面向对象的绝大部分基础知识点,也是考核的重点章节,因此严格意义上,这两章需要通篇理解。
第四章的非重点只是4.12和4.13。
4.1面向对象语言的主要特征。
封装性、继承、多态。
4.2节
1、按照要求设计和编写类体是面向对象编程的基础,有了类才能有对象。
类体的设计包括:
成员变量和方法的设计,4.2.2节的“梯形”类设计。
2、变量(成员变量和局部变量)的区分和有效范围。
成员变量可以在声明的时候赋初始值,但对成员变量的修改需要放在方法体内。
类的成员变量不仅可以是基本类型,也可以是引用类型(详见4.5节)。
3、什么情况下成员变量会被局部变量隐藏?
如果在一个方法体内,某成员变量被隐藏了,如何访问这个成员变量?
4、方法重载的要求(方法名、参数、返回值)?
5、构造方法的概念和作用?
构造方法可不可以重载?
6、类方法和实例方法的区别和使用,结合4.2.7、4.2.8进行总结。
4.3节(超重点)
1、类是创建对象的模板,对象一般在方法体内进行实例化和访问。
熟悉例4.1,4.2。
2、对象的内存模型(引用在栈中分配内存,存放的是实体的地址;实体在堆中分配内存。
)
3、被实例化的对象怎么操作自己的成员变量和方法?
4.4节
参数的传值(包括基本类型参数传值和引用类型参数传值)。
4.5节
例4.7,能够加深对类体的创建以及对象之间访问的理解。
理解Rectangle、Circle、Geometry三个类的关系,以及在主类中如何实现对象之间的访问。
4.6节—4.7节(超重点)
1、注意总结:
实例变量和类变量的区别?
2、实例方法和类方法的区别?
3、static(类)方法能调用其它实例方法和static方法吗?
static方法能访问实例变量和类变量吗?
能否在static方法内使用this或super?
4.8节
1、package语句在源文件中的位置?
一个源文件里可以由多少个package语句?
2、有包名类的存储目录有何规定?
3、DOS提示符环境下,有包名主类的编译与执行
4、public类的访问权限:
在类中的方法内能否使用其它包的public类创建对象?
在类中的方法内能否使用其它包的非public类创建对象?
4.9节
1、在程序中经常考核常用类的import语句。
例如,网络编程时需要引入里的类,则必须书写:
“import.*;”,这句代码引入了包里的所有类。
4.10访问权限
1、Java通过访问权限极大地完善了面向对象的封装性和安全性,类体内的所有方法和成员变量可以具有四种访问权限,对应的修饰符分别为:
private、缺省、protected、public。
分别代表什么权限?
第五章继承与接口
5.1节
子类通过extends关键字继承父类
5.2节
1、子类从父类中继承成员变量和方法,继承机制是一样的。
可以简单地记忆继承成员变量的情况,继承父类方法与其类似:
子类和父类在同一个包内:
不能继承父类的私有成员变量,其它的均可以继承,而且继承过来的成员变量保持不变。
子类和父类不在同一个包内:
子类不能继承private成员变量和友好成员变量;子类可以继承父类的protected和public成员变量。
5.3节
1、子类对象的构造过程(重点):
子类对象构造时,先调用父类的构造方法,结合PPT理解。
5.4节
1、子类可以从父类继承成员变量,在什么情况下会隐藏继承的成员变量?
2、子类重写父类方法是一个非常重要的应用。
例如,任何没有指定父类的类都是默认直接继承自Object类,一般情况下,要在类体中重写继承的toString()方法,toString()方法的返回值和主要功能是什么?
3、重写的注意事项。
5.6节
1、final关键字的作用
5.7节—5.8节
描述为什么“继承-重写”机制可以实现多态
5.9节(重点)
1、掌握5.9.1的内容,包括abstract类的特点和例5.11。
2、final和abstract能否同时修饰一个类,为什么?
5.10节(重点)
1、总结截止到目前为止所有的多态实现机制。
2、Java是严格的单继承机制,但是一个类可以实现多个接口
3、掌握5.10的内容,比较interface和abstractclass
第六章内部类与异常类
1、异常处理中throws、throw的区别
2、关键字try、catch、finally的作用
第九章常用实用类
9.1节
1、字符串(String)与字符数组(char[])之间的互相转化
9.2节
1、StringBuffer对象与String对象的区别
第十章JavaSwing图形用户界面
1、JFrame对象和常见容器的默认布局
2、如何为一个按钮注册action事件
3、Java是如何进行事件处理的?
第十二章输入输出流
1、了解字节流和字符流的基本使用和他们之间的区别?
2、能够使用缓冲流从文件中按行读写数据
3、能够使用对象流从文件中读写对象
4、什么是对象的序列化和反序列化?
如果一个类要实现序列化,必须实现哪个接口?
第十四章
1、如何连接数据库
2、如何完成数据库记录添加,删除,修改以及查询。
第十三章
1、泛型是什么?
作用是什么?
2、ArrayList与LinkedList的联系与区别?
3、添加到TreeSet的类需要实现的接口和重写的方法?
4、添加到HashSet的类需要重写什么方法?
为什么?
HashMap呢?
5、13.2章节中的(13.2.1和13.2.2),重点掌握add(E)、addFirst(E)、addLast(E)、removeFirst(E)、removeLast(E)的作用。
6、迭代器的使用。
第十五章
1、进程和线程的概念、区别?
进程:
进程是程序的一次动态执行过程
线程:
比进程更小的执行单位,一个进程在执行过程中可产生多个线程
每个进程都有一段专用的内存区域,但进程间可以共享相同的内存单元。
2、如何创建线程对象(两种方式)
用Thread的子类创建线程
通过实现Runnable接口来创建多线程
3、run()和start()的区别?
start:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。
通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。
run:
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。
总结:
调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。
4、会使用Runnable接口和synchronized关键子实现多线程之间访问同一个目标对象(重要)
5、线程的常用方法:
sleep()、wait()、notify()、notifyAll()的作用,哪些方法会抛出异常,什么异常?
sleep():
Thread类方法,用来控制自身流程。
wait():
Object类方法,调用此方法时,被调对象进入等待状态,直到被唤醒或等待时间到。
notify():
唤醒一个正在等待该对象的线程。
notifyAll():
唤醒所有正在等待该对象的线程。
异常:
wait(),notify():
java.lang.IllegalMonitorStateException。
wait(),sleep():
InterruptedException。
6、线程的生命周期
第十六章
16.3节
1、能够实现服务器端(使用ServerSocket)和客户端(使用Socket)的连接和数据发送(例16.5)
2、一般情况下,服务器端为什么要使用多线程机制?
服务器端使用的哪个方法会导致当前线程阻塞?
客户端接收数据为什么要启用新的线程?
(例16.6)
3、如何传输对象?
16.4节
1、基于TCP和基于UDP网络通信各自有哪些优缺点?
TCP的优点:
可靠,稳定
TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。
TCP的缺点:
慢,效率低,占用系统资源高,易被攻击
TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。
而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
UDP的优点:
快,比TCP稍安全
UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。
没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。
但UDP也是无法避免攻击的,比如:
UDPFlood攻击……
UDP的缺点:
不可靠,不稳定
因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
2、UDP通信时,哪个方哪个方法会导致线程阻塞?
DatagramSocket中的receive方法
JAVA面试题
1.一个java源文件中是否可以包括多个类(不是内部类)?
有什么限制?
可以,但是只能有一个public类而且如果有public类的话,这个文件的名字要和这个类的名字一样。
2.&和&&的区别
“&&”是逻辑运算中的“短路”,若"&&"前的条件为false时判断结果为false,不再执行"&&"后的语句块。
"&&"前为true则继续进行进行后半部分的判断
3.JAVA中有没有goto?
没有
4.在JAVA中如何跳出当前的多重嵌套循环?
在java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的的break语句,即可跳出外层循环。
5.Switch能否作用在byte上,是否能作用在long上,是否能作用在string上?
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。
显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
shorts1=1;s1=s1+1;有什么错?
shorts1=1;s1+=1;有什么错?
shorts1=1;s1=s1+1;有错,s1是short型,s1+1是int型,不能显式转化为short型。
可修改为s1=(short)(s1+1)。
shorts1=1;s1+=1正确。
而在s1+=1;中,由于是s1是short类型的,所以1首先被强制转换为short型,然后再参与运算,并且结果也是
short类型的,因此不会报错。
6.char型变量中能不能存储一个中文汉字,为什么?
不能char只占一个字节,汉字通常是两个字节来表示,可以使用char数组来表示汉字。
7.equals方法跟==有什么区别?
equals一般都是自己在类中重写的,在Object类中的equals就跟==是一样的,但equals一般比较的还是对象的值,==一般是比较对象的应用也就是内存地址了
8.静态变量和实例变量的区别?
静态变量和实例变量都可以用一个具体实例加.来引用。
如a.x;静态变量还可以直接用类名加.进行引用如ClassName.x。
静态变量和实例变量最大的区别是静态变量在内存中只有一份,所以该类的所有实例共享该变量;而实例变量随实例的不同可以不相同。
9.是否可以从一个static方法内部发出对非static方法的调用?
不行,可以这样理解,static修饰的方法可以直接用类名调用,非static修饰的方法必须用类new出对象才能调用。
当我们用类名直接调用时,可能这个类的对象并没有new。
如果这时候static方法里调用非static的方法就会出现空指针异常,当然这种错误编译时就不会通过。
10.integer和int的区别?
int是JAVA的一个基本类型,而Integer是JAVA的一个类,对应int。
因为在某些地方不可以用int而要用Integer。
而且基本类型运算的速度也要快。
int是变量的基本类型Integer是int的外覆类型
11.作用域public,private,protected,以及不写时的区别?
作用域当前类同一package子孙类其他package
public√√√√
protected√√√×
friendly√√××
private√×××
不写时默认为friendly
12.Overload和Override的区别?
构造器Constructor是否可被override
Overload是重载,是有相同的方法名,但参数类型或个数彼此不同,Override是重写,是在子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的完全一样,在子类中覆盖掉了父类的改方法。
不可以
13.接口是否可继承接口?
抽象类是否可实现(implements)接口?
接口可以继承接口,抽象类可以实现(implements)接口。
14.java中实现多态的机制
java中实现多态的机制靠的是父类或者接口定义的引用变量可以指向子类或者具体的实现类的实例对象,而程序调的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。
15.Abstract,class和interface有什么区别?
interface是接口,所有的方法都是抽象方法,成员变量是默认的publicstaticfinal类型。
接口不能实例化自己。
abstractclass是抽象类,至少包含一个抽象方法的累叫抽象类,抽象类不能被自身实例化,并用abstract关键字来修饰
16.什么是内部类?
内部类就是写在类中或方法中的类,它还是一个类,与其他类的不同就是他只为这个外部类(包含内部类的类)类所用
17.在java中String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类
18.是否可以继承String类?
String类是final类故不可以继承。
19.JAVA中String与StringBuffer的区别
String对一串字符进行操作。
不可变类。
StringBuffer也是对一串字符进行操作,但是可变类。
String是对象不是原始类型为不可变对象,一旦被创建,就不能修改它的值,对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去,String是final类,即不能被继承。
StringBuffer是一个可变对象,当对他进行修改的时候不会像String那样重新建立对象,它只能通过构造函数来建立。
字符串连接操作中StringBuffer的效率要比String高
20.JAVA语言如何进行异常处理,关键字:
throws,throw,try,catch,finally分别代表什么意?
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。
当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。
Java的异常处理是通过5个关键词来实现的:
try、catch、throw、throws和finally。
一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。
用try来指定一块预防所有"异常"的程序。
紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
Finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。
每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。
如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
21.列出java中最常见的异常!
1.java.lang.NullPointerException
2.java.lang.ClassNotFoundException
3.java.lang.ArithmeticException
4.java.lang.ArrayIndexOutOfBoundException
5.java.lang.IllegalArgumentException
6.java.lang.IllegalAccesException
22.什么是事件源,什么是监听器?
事件源:
产生事件的组件就是一个事件源。
例如,当在一个Button上单击鼠标是,将产生一个ActionEvent类型的事件,而这个Button就是事件源
事件监听器:
就是调用事件处理方法的对象。
当界面操作事件产生并被发送到产生事件的组件时,该组件将把事件发送给能接受和处理该事件的监听器。
23.List、Map、Set三个接口,存取元素时,各有什么特点?
List以特定次序来持有元素,可有重复元素。
Set无法拥有重复元素,内部排序。
Map保存key-value值,value可多值。
24.List,Set,Map是否继承自Collection接口?
List和Set是继承自Collection接口的接口,Set不允许重复的项目,List允许重复项目,Set接口派生的类有TreeSet,HashSet,LinkedHashSet。
List接口派生的类有Arr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 复习提纲 复习 提纲
![提示](https://static.bingdoc.com/images/bang_tan.gif)