JAVA总复习.docx
- 文档编号:26126556
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:35
- 大小:318.88KB
JAVA总复习.docx
《JAVA总复习.docx》由会员分享,可在线阅读,更多相关《JAVA总复习.docx(35页珍藏版)》请在冰豆网上搜索。
JAVA总复习
JAVA总复习
一.j2se
1.什么是类
类是某一种事务一般性的集合体,是相同或相似的各个事务共同特性的一种抽象。
2.什么是对象?
在面向对象概念中,对象是类的实例,对象与类的关系就像变量与数据类型的关系一样。
3.类的核心特性
封装性:
为类的成员提供公有的(public),缺省的(default),保护的(prote
ct),私有的(private)等多级访问权限,目的是隐藏类的私有变量和类中的方法细节。
2)继承性:
提供从已存在的类,创建新类的机制。
继承使一个新类自动拥有被继承类的全部可继承的成员。
3)多态:
提供类中方法执行的多样性,多态性有两种表现形式(重载和覆盖)。
对象中的方法:
对象中的方法表达了对象所具有的行为,
属性:
能够被外界或对象所处的环境,所感知或操作的数据或状态。
4.什么是JAVA
Java是一门易于编程的跨平台的编程语言,同时又是一个开发,应用和部署的平台。
5为什么使用java
因为java与平台无关,一次编译处处运行,以及其易于编程的特性。
6java的开发步骤
1)第一要编写源代码,*.Java。
2)编译
3)执行
9java的环境变量
1)JAVA_HOME,jdk的安装路径。
2)CLASS_PATH,jvm装载class字节码文件时的搜索路径。
2)PATH,是系统的环境变量,命令的搜索路径。
10.jvm是什么
JavaVirtualMachine(java虚拟机),是一个逻辑的操作系统,他屏蔽了硬件和平台的信息。
Jvm可以将字解码文件编译并执行。
正是一种独立执行的方式,使得java具有与平台无关的特性。
11类的加载过程
类加载器加载字解码文件到内存。
Jvm内存数据区将对象状态放置到堆区,各线程使用的变量放到栈区,类的特征放在方法区。
然后进行字解码验证,在执行。
12常用的java命令
Javac:
Java:
Javadoc:
Jar:
13类的语法和规范
1)一个源文件只能有一个public的类。
2)public源文件可以有多个类定义。
3)源文件名必须与public类名一致。
4)包名必须放在第一行。
5)包名可以有0个或1个,但是不能有多个。
6)源文件如果带包的话,最好存放着包结构对应的录下。
14标识符
程序语言中用于标识变量名方法名,类名的字符串就是标识符。
15java语言命名规范
1)开头必须以字母,下划线,$开头,数字不能开头,大小写敏感.
2)类名首字母要大写.方法名首字母要小写,每个单词的首字母大写.
3)常量名所有字母都要大写.如果常量名有几个字母的组合要用下划线连接.
16关键字
程序语言当中,程序已经使用.用户不得在使用的单词.一般关键字都是小写.
17数据类型
1)基本数据类型
A整形shortintbytelong默认的是int
B浮点型floatdouble默认的是double
C布尔型boolean
D字符型char
2)引用数据类型
A类
B接口
C数组
18main方法执行的过程
1)先到方法去搜索Student,如果搜索不到则取加载Student的字解码文件,
2)通过CLASS_PATH查找对应的Student对应的字解码文件.找不到就返异常,类找不到.(ClassNotFoundExecpetion)
3)将字解码文件的二进制数据转换成Class对象放置于方法区,然后加载完成.(此对象描述了Student类的方法特征和静态成员..)
4)验证字解码文件
5)在堆区划分空间放置Student对象
6)在栈区放置引用对象变量stu,stu指向Student对象的内存地址.
7)Student对象存放了Class对象的地址
8)通过stu引用类型变量的值找到Student对象。
用过Student对象存放Class对象的地址,找到对应的Study对象的方法然后执行。
9)释放资源,jvm运行结束。
19基本类型和引用类型的区别
1)引用类型存放的是对象地址,基本类型存放的是变量的实际值。
2)引用类型变量可以指向复杂的数据结构,
3)引用类型数据变量可以使用.操作。
来访问他所指向的对象的方法或属性。
20操作符
运算符和操作数按照一定规则组成的语句就是表达式。
比较运算符==<=<=
4)位运算符~:
取反(3)相等运算符
^:
异或
|:
或
&:
与
5)逻辑运算符
6)条件运算符
21变量的作用域
1)类的成员变量:
A:
类的静态成员变量,生命周期,从类加载开始到类刻意卸载结束,静态成员初始化后放到方法区。
B:
类的实例成员变量,类的实例成员变量初始化后放到队去。
生命周期,此对象生成开始到对象生成结束。
2)
3)方法的参数:
4)异常的参数:
22数组
数组就是相同元素类型的线性集合,是一个指向数组的引用对象.
Iterator是一个迭代器接口
ListIteraror继承Iterator,只能用于List接口
Colleaction是集合框架的集成接口,List是有序可重复,Set是无序不可重复
List实现了类ArrayList是实现了可变数组的数据结构
LinkedList实现了双向链表的数据结构
Set实现类HashSet实现了无序不重复
LinkedHashSet有序不重复
TreeSet升序不重复
Map最大特点是键值对映射(keyvalu)
实现类HashMap按照key无序
LinkedHashMap按照key有序
TreeMap按照key升序
Utilities是集合框架的工具类,其下所有的类都是Static的
Arrays是对数组辅助类。
Comarable和Comparator是做比较排序的
Victor1.3版本以前的,其代替ArrayList。
Victor和ArrayList的区别:
1)Victor是线程安全的,ArratyList不是,相比之下ArrayList的效率会高。
2)当初始容量满的时候ArrayaList增加原来的一般,Victor增加原来的一倍。
HashTble和HashMap,HaspTable是线程安全的,HashMap不是,HashMap效率高。
2)HaspMap运行null的key存在,HaspTable不允。
23类里可以有的成员
属性名实例属性和静态属性
方法静态方法和实例方法
构造器缺省构造器和带参构造器
静态代码块和实例代码块
24参数传递
1)对于基本数据类型,将实际变量原样的付给实参。
2)对于引用类型,将引用类型的变量地址复制给实参。
25this何时使用
1)实例变量与局部变量同名用this,用this来区分实例变量名和局部变量名
2)在构造器重载时,用this来调用其他的构造器
3)在实例方法中,用来当作当前对象的引用传递给方法
26方法的重载
1)方法名要相同
2)在一个类中多个方法具有不同的方法签名(方法签名包括不同的参数类型,参数个数,参数顺序)。
3)返回值类型不做要求。
27类的初始化过程
1)在堆区分配内存空间(即new后的事情)。
2)给对象属性符默认值。
引用类型赋null。
3)调用构造方法进一步赋值。
28构造器
类中提供的用于初始化对象的特殊方法。
这个方法与类同名无返回值,类中没有提供构造器。
Jvm会提供以默认的不带参的缺省的构造器。
类中有带参的构造器,则jvm不再提供。
30封装继承多态
封装:
1)将类的实现细节隐藏起来。
2)对外提供一致的接口。
3)提高系统的维护性。
继承:
一个类自动获得另一个类的属性或方法过程。
使用:
extends,单根继承。
所有的类都是Object的子类。
构造器不能被继承。
子类初始化时默认调用父类缺省的构造器。
子类调用弗雷带参的构造器,则父类可以不提供缺省的构造器.否则必须有缺省的构造器.
(1)如何使用继承?
1)区分Has-aIs-a.
2)子类要扩充父类的功能.
3)子类需要大量置换父类的功时,不应该使用继承.
4)不要动工具类继承.
(2)继承的有缺点?
优点1)继承是最容易复用代码的形式
2)修改父类功能时子类可以自动获得父类的功能.
缺点:
1)打破了封装,继承只是类型用.
31复用
1).编译时编译器检查声明的类型和方法信息
2).运行时jvm对实例方法和引用变量即实际引用的对象动态绑定,对静态方法和引用的变量声明的类型静态绑定
3).类的属性在编译阶段绑定。
32instanceof
判断实例是否是某个类型或其子类型的。
用法:
1)只能在夫子类之间进行比较。
2)null可以进行比较结果为false,器返回值即为true或false。
3)判断实例类型时,一般从子类开始。
然后是父类。
33override
方法覆盖:
子类重写父类中的方法。
子类重写父类方法的条件:
1)方法名相同。
2)方法签名相同。
3)返回值相同。
4)子类的修饰符大于等于父类的修饰符。
5)子类抛出的异常要小于等于父类抛出的异常。
34依赖关系
1)一个类中的方法,其局部变量类型是另一个类,则这两个类具有依赖关系。
2)一个类中的方法,调用另一个类的静态方法。
3)一个类中的方法参数是另一个类中的静态方法。
35多态的运行机制
1)在类编译阶段,编译器会检查类型是否匹配。
2)在运行阶段,JVM会调用实例的对应方法。
先检查父类的方法,然后检查子类的方法。
然后编译器会检查实际声明的类型。
36super
1)子类调用父类的属性和方法。
2)子类预付类有同名的方法时,子类可用super来区分是父类的方法。
37finall
1)finall修饰的类不能被继承。
2)finall修饰的方法不能被覆盖。
3)finall修饰的变量是常量,常量不可修改,但有例外。
一种是实例常量,若定义时没有赋值,则可以在构造器或实例代码块时赋值,但二者只能选一个为其赋值。
第二种静态常量,若定义时没有赋值则可以在静态代码块中赋值。
38抽象类
抽象类:
具有部分实现的类。
抽象类使用时注意事项:
1)不能实例化。
2)可有0到多个抽象方法。
3)可有构造器。
4)具体类继承抽象类时,必须实现所有的抽象方法。
5)抽象类可以间接的被子类调用其构造器,并在内存中分配空间,简介实例化。
6)抽象类可以有静态方法,可以返回其子类的实例。
39怎样使用抽象类
1)把个各类中可以共用的方法和逻辑,放到抽象的父类中,越多越好。
2)属性应该尽可能的放到子类中。
40接口
一什么是接口:
总宏观角度说是一个规范。
从面向对象来说是一个类型。
1)属性是常量一定要赋值。
2)方法是抽象方法,没有方法体。
3)没有构造器
4)接口支持ctasting,支持强制类型转换。
5)接口可以继承至多个接口。
6)实现接口的类,必须实现全部方法。
如果是抽象类则可以选择实现部分的方法。
二为什么使用接口
1)可插拔性的保证。
可以随意更换接口的实现类。
2)接口可以解决多继承的问题。
3)接口使规范的制定者,实现者,使用者分开。
40接口和抽象类的区别.
1)接口没有任何实现,而抽象类可以有部分实现也可以没有。
2)如果需要复用或者共享代码。
应该用抽象类而不是接口。
3)继承无法的解决类型转换问题,接口就是未解决这一问题而出生的
41访问控制
作用域当前类同一package子孙类其他package
public√√√√
protected√√√×
default√√××
private√×××
42static修饰符
1)static修饰属性,成为静态属性,犬类都有,常叫类变量,和具体对象无关。
无多态,类名去访问.
2)修饰方法,静态方法中,只能访问静态成员.
非静态方法中可以访问静态成员..工具类的对象都是static的.
3)修饰代码块
出世代码块是在类中,而不是在任何方法之内的,被static修饰的代码块被称为静态代码块,静态代码块在类加载的时候执行一次。
43异常
异常:
JVM将程序中运行的不正常情况的现场信息打包成一个对象叫异常类对象。
并且将此对象抛出,交由相应的方法或对象来处理。
异常信息:
记录了错误的原因,指出了错误的位置,打印了错误的栈信息。
异常处理机制:
是责任链机制,子类不处理异常。
子类则交由父类处理。
交由父类处理后知道追究到JVM然后跑给后台处理。
子类不处理异常的原因:
让程序能够执行完毕
异常类的层次结构:
error和exception都是throwable的子类。
Error:
错误,程序运行中发生的系统异常。
此种异常当前程序一般无法解决。
Exception:
异常的分类
1)checked:
()编译器强迫必须捕获并处理的异常
2)unchecked:
对于此种异常编译器不要求捕获。
RuntimeExcetipon都是unchecked的子类。
为什么unchecked的异常编译器不要求捕获?
1)程序员可以避免的错误。
low-grademistake
2)当错误发生时捕获异常也无济于事。
如何处理异常?
1)交由给自己当前方法处理。
2)交给别人处理,由调用该方法的方法处理。
处理步骤:
A:
方法后声明可能抛出的异常(throwsExceptiontype)。
B:
不用再做其他的异常处理
C:
调用方法必须声明被调用方法的异常。
3)自己处理一部分,然后掉用系统的异常处理方法。
Throw的注意事项:
1)throw可以抛出另一种类型的异常。
2)throw不可语句后不能带有其他代码。
Throw后的代码永远不会执行。
异常的捕获:
try{
}catch(Exceptiontype1){
methodbody1
}catch(Exceptiontype2){
methodbody2
}
1)在trycatch语句中可能不止抛出一个异常,但每一时刻只能跑出一个异常。
2)对可能抛出的每一种异常分别用trycatch来处理。
3)Catch语句处理多层异常应遵循,从子类到父类的顺序。
Finally
1)Finally用于资源的释放
2)在异常处理中finally语句一定会被执行到。
3)Finally语句中一定会有return语句,如果有return语句,正常顺序应先执行finaly
然后执行return,当发生异常时,先执行catch语句捕获异常,如果没有catch语句,则执行finally语句,在执行return语句。
自定义异常
自定义异常的意义:
1)java程序语言可以定义等多的方法来处理异常。
自定义异常可以提供更复杂更详细的方法。
这样可以极大的加强软件的健壮性。
2)代码更加清楚。
如何自定义异常:
1)继承自Exception,使自定义异常变成unchecked(搜查)异常。
2)继承自RuntimeException,使自定义异常变成unchecked(搜查)异常。
IO
一·IO是数据输入输出的通道,流中的数据是有序的。
二·流的分类
按数据流动方向:
1)输入流:
只能从中写入字节数据而不能向其写入数据
2)输出流:
只能从中读取字节数据而不能向其写出数据。
按照流所处理的数据类型:
1)字节流:
处理字节数据。
2)字符流:
处理字符数据。
按照流所处理的源来分
1)节点流:
从一个特定的IO设备()读写数据的流。
2)处理流:
对已存在的流进行连接和封装的流。
intread():
读取一个字节,并将它返回。
intread(byte[]buffer):
将数据读入一个字节数组,同时返回读取的字节数。
voidclose():
关闭流。
线程与进程的区别
1)给个进程都有独立的代码和数据空间,进程间的切换会有较大的开销。
2)线程可以看成是轻量级的进程。
同一线程共享代码和数据空间。
3)每个线程有独立的运行栈和程序计数器,线程切换的开销小,多线程是在同一应用程序中有多个数序流同时执行。
4)多进程时是在操作系统中能同时运行多个任务。
创建线程的两种方式:
1)定义一个线程类,继承Thread并重写其中的Run方法。
Run方法称为线程体。
2)提供一个实现接口Runnable的类,作为线程的目标对象,在初始化一个Thraed类或者thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体。
(自己对应到代码上)
二者之间的比较
使用ruannable接口:
1)可以将CPU代码和数据分开,形成清晰的模型
2)还可以从其他的类继承。
3)保存程序风格的一致性。
直接继承Thread类:
1)不能再从其他的类继承。
2)编写简单可以直接操纵线程。
1)当创建一个新的线程时,其就处于创建状态。
此时其仅仅是一个空的线程对象。
系统不为其分配资源。
2)Runnable我们称为可运行状态。
当线程处于创建状态时,可调用Start方法来启动。
产生运行这个线程所需的系统资源。
安排其运行。
3)死亡状态:
Dead,处于死亡状态就是线程终止。
线程终止的两种方法:
1.是自然撤销,线程的Run方法正常退出。
2.强制停止.调用线程实例的Stop方法,可以强制停止当前线程。
4)转为停滞状态Blocked:
1.通过调用Sleep方法让线程进入休眠状态。
2.通过Wait暂停线程。
3.线程正在等待某个IO设备动作完成。
4.线程似着调用另一个对象的synchronized函数,而且尚未取得对象的机锁。
守护线程
守护线程又称daemon Thread,是为其他线程提供服务的线程。
守护线程一般是一个独立的线程,他的Runnable是一个无限循环。
守护线程与其他线程的区别是,如果守护线程是唯一运行的线程,则程序自动退出。
互斥锁(对象锁)
来保证共享数据操作的完整性。
第一,每个对象都对应于一个可称为互斥锁的标记,这个标记用来保证来保证任一时刻只能有一个线程来保证该对象。
什么时候使用synchronized
1)这个函数是否修改对象内的关键变量(能通过被其他线程读取或修改的变量)的状态。
2)这个函数是否是和关键变量状态有依存关系。
3)基类的方法为synchronized,synchronized的方法不能被继承,复写时重新采用synchronized
释放锁
如果一个线程一直占用着对象锁则其他线程用于无法访问该对象,因此需要在适当的时候将对象归还。
1)当对象执行到synchronized,块结束时释放synchronized
2)当synchronized块中遇到break,return,和抛出异常则自动释放对象锁。
3)当一个线程调用wait方法时,其放弃拥有的对象锁,并进入等待队列。
死锁
指两个线程都互相等待对方释放锁,是不可预知或避开的,应采取措施避免时死锁的运行。
Sleep和wait的区别
1)Sleep是Thread类的方法,而Wait是Object类的方法。
2)Sleep可以在非synchronized的函数中调用,而Wait只能在synchronized函数或同步块中被调用。
3)Sleep不会释放对象锁,Wait会释放对象锁。
4)使用场景不同。
Sleep方法同一个线程内间隔多长时间后再次执行此任务。
Wait是多个线程之间。
JDBC
JAVADATEBASE
一JDBC链接步骤
1)注册驱动程序
2)建立连接
3)发送和执行Sql语句
4)处理结果
5)释放资源
二采用对象
1)Connection:
建立与数据库之间的连接。
DriverManager的类的getConnecion方法将建立数据库的链接。
2)Statement:
用于将SQL语句发送到数据库中。
存在三种Statement对象1:
statement2:
PreparedStatement3:
CallableStatement4:
result包含符合SQL语句执行的结果集,并且通过一套get方法提供了这些行中数据集的访问。
三事务的基本概念
事务是一些事件的集合,执行一条Sql语句可以理解为一个事务,事务中包含多个事件。
如果每个事件都能执行成功时事务才执行,如果任何一个事务不能成功执行,事物的其他事件也不能被执行。
四JDBC如何实现实务
booleandefaultCommit=conn.getAutoCommit();
conn.setAutoCommit(false);
try{
stmt.executeUpdate(strSQL1);
stmt.executeUpdate(strSQL2);
mit();
}
catch(Exceptione){
conn.rollback();
e.printStackTrace();
}
finally{
if(stmt!
=null){
stmt.close();
}
if(conn!
=null){
conn.close();
}
}
conn.setAutoCommit(defaultCommit);
Serlvet和JSP的关系
JSP是以另一种方式实现Servlet,Servlet是JSP的早期版本。
在JSP中,更加注重页面的表现。
而Servlet中更加注重业务逻辑的实现。
因此当页面显示的效果比较复杂时,首选JSP,或者开发过程中,HTML代码经常发生变化,而JAVA代码相对比较固定时,可以选择JSP,而我们在处理业务逻辑时,首选Servlet。
同时JSP能处理浏览器的请求。
而Servlet则可以处理客户端的应用程序请求。
因此Servlet加强了WEB服务器的请求。
Servlet的生命周期
1)服务器加载Servlet。
2)服务器创建Servlet实例。
3)调用Servlet实例的init方法。
4)收到请求,调用service方法。
5)service方法处理请求,并将输出结果返回客户端。
6)Servlet等待下一个请求,或等待卸载。
如果等到请求则转到第四步,重新执行。
7)Servlet在服务器调用destroy方法时被卸载。
Servlet中的init方法何时被调用
1)服务器第一次访问Servlet的时候被调用
2)在web.xml如果设置load-on-startup>=0,则服务器启动时就会调用init方法,加载Servlet
Servlet中的destroy方法何时被调用
1)Servlet被卸载前
2)Servlet很长时间没有被使用.
HttpSession接口的功能和使用方法
HttpSession是java.servelt.http包中的接口,其封装了会话的概念.其定义为publicinterfaceHttpSession,可以使用HttpServletRequest的对象的Get,Set方法.来得到这种类型的对象.语法为HttpSessionsession=request.getSession();
什么是主键,使用组件有什么优点
1)现在软件开发都以转向基于组件的开发.,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 复习