Java复习大纲
2022-05-06 16:39:42 0 举报
AI智能生成
Java复习大纲
作者其他创作
大纲/内容
1.乱七八糟
Java程序分为两类:
应用程序(Java application)
小程序(Java applet)
Java是简单的
Java是面向对象的
Java是健壮的
Java是安全的
Java是可移植的
Java是解释型的
Java是多线程的
javac 是用来编译源代码的命令。
java 是用于执行类文件的命令。
2.基础语法
标识符的命名规则
由字母、数字、下划线_、美元符号$组成!
首字母不能是数字
不能是保留字(50个)
区分大小写
标识符名称最好有意义
数据类型
精度由低到高:
byte 8位有符号数
short 16位有符号数
int 32位有符号数
long 64位有符号数
float 32位
double 64位
布尔数据类型来自布尔代数,
它的值域包括两个值:真(true)和假(false)。
boolean xx = true;
语法
条件语句
if语句、if-else语句
switch语句
循环语句
while循环
do-while循环
for循环
跳转语句
break 和 continue
方法
方法的结构:
修饰符 返回值类型 方法名(参数列表)
{
//方法体
}
方法头指定方法的修饰符、返回值类型、方法名和参数。
方法重载就是指:
两个方法具有相同名称和不同的参数形式。
方法名 与 参数形式合称方法头标志。
调用方法时,Java运行系统能够根据方法头标志决定调用哪个方法。
3.封装
类与对象
类的定义:
[修饰符] class 类名
{
属性定义(声明)
方法定义(声明)
}
属性定义的语法:
[修饰符] 类型 属性名= [初值] ;
类型可以是任何类型,包括类。
属性有默认值。
方法定义的语法:
[修饰符] 返回值类型 方法名(参数列表)
{
语句(组);
return语句;
}
创建对象的语法:
类名 对象名 = new 类名();
调用对象属性和方法的语法:
对象名.属性名
对象名.方法名
琐碎
变量的作用域
属性:
类的作用域,有默认值
局部变量(变量):
块的作用域,没有默认值
如果属性名与局部变量名相同,
则在局部变量的作用域内,属性被隐藏。
this代表类的当前对象
利用“this.”可以调用当前对象的成员
this可以实现构造方法的调用
利用this(参数)可以调用构造方法
必须写在构造方法的第一条
访问控制
使用其他包中的类
Import 包名.类名
例:import myPackage.myClass;
注意:只能引入其他包中的public类
类的访问控制修饰符
public:包内外都可访问
默认:只能包内访问
类成员的访问控制修饰符
public:包内+包外可访问
protected:包内+包外子类可访问
默认:包内可访问
private:类内可访问
static
静态属性
用static修饰的属性,也称为类属性
用于描述一类对象共享的属性
比如:员工的最低工资,学生的学校名称等等
可通过类名直接调用,也可通过对象调用
静态方法
用static修饰的方法,也叫类方法
静态方法中不能访问非静态成员
如果一个方法中没有访问非静态成员,则这个方法可以声明成静态的
静态属性和静态方法在第一次使用类的时候创建,所有类的对象共享
非静态属性和非静态方法在创建对象的时候创建,每个对象之间独立
4.继承
语法
[修饰符] class 子类名 extends 父类名
{
类体;
}
例如:class Apple extends Fruit
{ … }
子类只能继承父类中可访问的属性
父子类在一个包中,子类可以继承父类中的非私有属性
父子类不在一个包中,子类可以继承public类中的,public属性和protected属性
隐藏和覆盖
子类可以定义与父类同名的属性,称为属性隐藏。
也就是说子类可以重新定义父类的属性。
在子类中定义与父类方法头相同的方法,称为方法的覆盖。
通过方法覆盖,子类重新定义了父类的方法。
构造方法
在创建子类对象时,先调用父类构造方法,
然后再调用子类构造方法
默认情况下,调用父类无参的构造方法
如果父类中没有无参的构造方法,则在默认情况下,创建其子类对象会出错。
super
如果希望调用父类有参构造方法,可以借助super完成。
在子类中调用父类的属性和方法
不能在静态方法中使用。
父子类对象
子类对象可以当作父类对象使用
父类对象不能当作子类对象使用
如果父类引用实际指向的是子类对象,
那么该父类引用可以通过强制转换成子类对象使用
多态性
多态:一种功能有多种实现。通过方法的重载和覆盖可以实现多态。
动态绑定:方法体的调用是在程序执行时动态决定的。是实现多态的保证。
final
final可以修饰:
属性或局部变量,不能被修改(常量)
方法,不能被覆盖(最终方法)
类,不能被继承(最终类)
abstract
abstract类:
不能实例化,只能用于继承
abstract方法:
只有方法头,没有方法体
只能定义在抽象方法中
抽象方法的作用:
强制非抽象子类中必须实现(覆盖)这个抽象方法。
5.接口
概念
用于描述类对外提供功能规范的、能够多重继承的、特殊的抽象类。
接口中只能定义静态常量和抽象方法。
Java中的类只能单继承
Java中的接口可以多重继承
定义接口
接口定义与类定义相似,但只能包含静态常量和抽象方法。
接口之间可以多重继承
[public] interface 接口名 [extends 父接口列表]
{
// 属性声明
[public] [static] [final] 属性类型 属性名 = 常量值 ;
// 方法声明
[public] [abstract] 返回值类型 方法名 ( 参数列表 ) ;
}
实现接口
类通过implements关键字来实现接口。
类必须实现(覆盖)接口中描述的方法。
class 类名 [extends 父类] [implements 接口列表]
{
覆盖所有接口中定义的方法;
}
接口与抽象类
接口中的数据必须是常量;抽象类可以有各种类型的数据。
接口中的每个方法,只有一个头标志,没有实现部分;抽象类可以有具体的方法。
由于定义在接口中的所有方法都是抽象方法,Java不要求在接口中abstract修饰符放在方法前;
但是在抽象类中必须将abstract修饰符放在抽象方法之前。
6.内部类与匿名类
内部类
也叫做内嵌类,是一种定义在其他类内部的类。
内部类相当于外部类的一个成员
可以访问外部类的所有其他成员
使用受到外部类的限制
匿名类
一种特殊的内部类,类的定义和实例化一步完成。
匿名类没有名字,只能使用一次,而且,只能是某个类的子类。
7.异常
概念
异常,也称为例外,表示程序运行中出现意外情况的一个信号。
异常是一种特殊的运行错误对象,一旦产生会中断程序的正常执行。
当程序遇到运行时错误时,会产生并抛出一个信号(异常),
然后通过try-catch语句捕获这个信号(异常),
这样就可以根据这个信号(异常)的不同进行相应的处理。
异常类
程序员可以自定义异常类,用于描述特定的异常情况
继承Exception类就可以定义自己的异常类
抛出异常
系统预定义异常:
系统自动抛出
通过throw抛出
自定义异常:
通过throw抛出
注意: throw后不能写语句;
处理异常
要保证程序在异常抛出后能够正常运行,需要对异常进行处理。
通过try-catch语句对异常进行捕获并处理
对可能产生的多种异常可以通过多个catch子句进行捕获和分别处理。
注意:
多个catch子句中,前面catch的异常不能是后面catch异常的父类
一般把捕获Exception异常的catch子句写在最后,能够捕获所有的异常。
try-catch语句后可以加finally子句
写在finally子句中的语句无论异常是否产生,无论产生的异常是否捕获成功都要执行
异常声明/异常报告
如果一个方法中存在未处理的异常,
则需要在该方法头上用throws关键字声明该异常。
通过异常声明可以将异常报告给方法的调用者。
RuntimeException及其子类的异常可以不声明。
8.类库*
常用类库
基本类库
java.lang 最基本的包,缺省引入
java.util 包含了很多工具类
输入输出
java.io 包含了很多通过流、
串行化和文件系统进行输入输出的类
图形用户界面
基础图形包awt
java.awt
java.awt.event
Swing包
javax.swing
javax.swing.event
Applet
java.applet
基本数据类型的封装类:
byte 的封装类是Byte
short 的封装类是Short
int 的封装类是Integer
long 的封装类型是Long
float 的封装类型是Float
double 的封装类型是Double
char 的封装类型是Character
boolean 的封装类型是Boolean
String类中常用方法
String trim()
boolean endsWith(String s)
boolean startsWith(String s)
String replace(char old,char new)
String replaceFirst(String o,String n)
String replaceAll(String o,String n)
String[] split(String regex)
java.util.Date
用于表示日期和时间
Java.util.Calendar
获取当前时间
数组
数组引用的定义:
String[ ] s1;
String s2[ ];
int[ ] i1;
int i2[ ];
对象名 = new 元素类型[元素个数]
s1 = new String[5];
i1 = new int[6];
int[ ] i2 = new int[10];
Date[ ] d1 = new Date[2];
Int[ ] i3 = {2,3,5,1,2};
注意:对象数组的元素是对象引用
创建多维数组
int [][] a = new int[2][3];
int [][][] b = new int[2][3][4];
Circle [][] c = new Circle[2][3];
多维数组元素的访问
a[0][0]
b[0][0][0]
List
数组保存类型明确的对象,可以是多维的,
也可以保存基本数据类型数据,但是数组一旦生成,其容量不能改变。
Collection保存单一元素,而Map保存相关联的键值对。
与数组类似,List也建立数字索引与对象的关联,
可以认为数组和List都是排好顺序的集合。List是可以自动扩充容量。
但是,List不能保存基本数据类型的数据,只能保存Object引用,
因此,取元素后需要作类型转换。
如果需要作大量的随机访问(检索),就使用数组或ArrayList,
如果要经常从集合中插入或删除元素,应该使用LinkedList。
队列、双向队列以及栈的行为,可以由LinkedList来实现。
Map是一种将对象与对象相关联的设计。
常见Hashtable、HashMap和TreeMap,
其中HashMap与Hashtable相似,TreeMap侧重于排序。
Set不接受重复元素。HashSet提供最快的查询速度,
而TreeSet保持元素处于排序状态。
0 条评论
下一页