Java复习1.docx
- 文档编号:15446348
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:18
- 大小:143.19KB
Java复习1.docx
《Java复习1.docx》由会员分享,可在线阅读,更多相关《Java复习1.docx(18页珍藏版)》请在冰点文库上搜索。
Java复习1
Java复习
一、
⏹Java虚拟机又称为JVM(JavaVirtualMachine):
可以理解为一个以字节码为机器指令的CPU。
⏹JRE:
JavaRuntimeEnvironment。
Java的运行环境。
运行JAVA程序所必须的环境的集合。
⏹JDK:
JavasoftwareDevelopmentKit:
Java的开发环境。
软件开发包,帮助我们做软件开发的一系列包,一系列的应用程序。
2.Java中类的定义
[类修饰符]class类名[extends父类名]
[implements接口名]
{
成员变量定义;
方法定义;
}
注意:
定义类的时候一般会包含三要素:
类名、属性、方法。
一般情况下,变量定义在前,方法定义在后
3.方法首部三要素:
返回值类型、方法名和方法参数三个基本要素。
方法定义的一般形式:
[修饰符]返回值类型方法名(参数列表)[throws异常列表]{
方法体
}
参数列表的一般形式:
参数类型参数1,参数类型参数2,…
4.对象的创建
要创建对象,必须使用new关键字和想要创建对象的类名。
<类名><对象名>[=new<构造方法名>([实参表])];
例如:
Studentp2=newStudent();
Studentp2;
p2=newStudent();
5.构造方法
▪构造方法:
用来完成创建的对象初始化工作,是Java中的一个特殊的方法。
Ø创建的对象的状态,系统会给一个默认值,不一定合适。
Ø用构造方法完成新创建的对象初始化
▪构造方法的作用是用于在new一个类对象的时候,会总先调用这个类的构造方法。
⏹对象创建的形式:
类名对象名=new构造方法名(参数列表);
▪例二:
“人类”的方法
publicclassPerson{
//Person类的属性
intage;
booleangender;
Stringname;
publicPerson(intage,Stringname,booleangender){
this.age=age;
this.name=name;
this.gender=gender;
}
//人类打招呼的方法
voidsayHello(){
System.out.println(“Hello,Iam”+ name);
}
}
二、1.对象的创建与构造方法
▪如果一个类有一个或多个有参数的构造方法而没有显示定义无参数的构造方法,那么就不能用默认的无参数的构造方法创建对象。
classCar{
Stringmodel;
publicCar(Stringm){model=m;}
voidprintModel(){
System.out.println("Themodelofthiscaris"+this.model);
}
CarmyCar=newCar(“奔驰”);//正确
CarmyCar=newCar();//错误,必须在类中显示定义无参数的构造方法
2.访问控制符
▪类中成员的访问权限
Øpublic:
修饰的类成员可以被任何类访问,通常用来声明一个类的对外的方法,不推荐在一个类中的成员变量前使用
Øprotected:
修饰的类成员可以被这个类自身、该类的子类和同一个包中的其他类访问,其他范围的类不能访问这些protected修饰的类成员
Øprivate:
修饰的类成员只能被该类本身访问,通常用来隐藏类的一些属性和方法
Ø默认权限:
未加上述3种类型访问控制符的成员拥有默认的访问权限,即只能被类自身和同一个包中的类访问,又叫做包访问权限
3.static小结
▪不论在程序中的位置如何,静态变量,静态方法,静态代码块在类加载时首先被执行。
▪不管产生多少个类的对象,静态变量,静态方法,静态代码块只被执行一次。
▪当一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。
▪但是如果产生类的对象或者调用该类的静态方法或者静态变量,都会产生类中的静态成员。
final控制符
▪final修饰一个类,表示这个类不能有子类,即该类不能被继承
▪final修饰一个方法,表示这个方法不能在子类中被覆盖(override)
▪final修饰一个变量,表示该变量只能并且必须被赋值一次,此后就是只读变量,变量的值不能被修改。
abstract控制符
▪用来修饰一个类或方法
▪修饰一个类时,说明该类是抽象类,抽象类不能创建对象。
▪修饰一个方法时,说明该方法是抽象方法。
抽象方法的定义没有方法主体,只有方法说明。
4.抽象方法的写法:
abstract返回值类型抽象方法(参数列表);
▪抽象类中的方法个数>=0,也就是说抽象类中可以没有抽象方法;
▪一个类中如果有抽象方法,那么这个类一定是抽象类
⏹抽象类的子类可以是抽象类,也可以是非抽象类。
Ø子类是抽象类:
则子类可以实现抽象类的部分抽象方法或全部方法。
Ø子类是非抽象类:
则该子类必须要实现抽象类的所有方法。
5.数组声明、创建、初始化
静态分配数组空间只能在数组声明的同时使用
int[]arr;
arr={1,2,4,5};
int[]arr;
arr=newint[]{12,34,46,25};
int[]arr;
arr=newint[3];
arr={1,2,3};
int[]arr;
arr[0]=1;arr[1]=2;arr[2]=3;
6.如何创建包
packages1.java.sg.chap7;
publicclassAccpSchool{
……
publicStringtoString(){
……
}
}
1.使用package声明包,以分号结尾
2.如果有包的声明,一定作为Java源代码的第一条语句
7.如何导入包
import包名.类名;
1、系统包(eg:
java.lang)
2、自定义包:
net.javagroup
*:
指包中的所有类
Hello:
指包中的Hello类
importjava.util.*;//导入java.util包中所有类
importjava.lang.*;//导入java.lang包中所有类
三、1.继承
继承是可以让某个类的对象直接使用另一个类的对象的属性和方法。
继承的目的:
实现代码重用
子类自动继承父类非private的属性和方法
子类对父类可做扩展和特殊化
增加新的成员:
变量和方法
重新定义父类中已有的变量:
属性隐藏
重新定义父类中已有的同名方法:
方法覆盖(override,方法重写)。
方法覆盖:
子类和父类的方法具有相同的名称、参数列表、返回类型
2.方法覆盖的原则
方法覆盖原则:
两同两小一大
⏹两同:
子类中的方法应与父类中的被覆盖的方法有完全相同的:
方法名、参数列表。
但方法体不同。
⏹两小:
⏹子类方法返回值类型应比父类方法返回值类型更小或相等;
⏹子类方法声明抛出的异常应比父类方法声明抛出的异常类更小或相等。
⏹一大:
⏹子类的访问权限比父类的访问权限更大或相等。
或者说,修饰符级别操作范围越来越大,如父类是protect级别,子类可将其改为public级别。
⏹要么都是static方法,要么是成员方法。
3.this和super的比较
注意this调用的是本类的构造方法;super调用的是直接父类的构造方法。
this指代本类的对象,super指代父类的对象。
this出现在类的构造方法或成员方法中,用来代表使用该方法的对象
在构造方法中使用this:
1使用本对象的成员变量或方法,this.属性
2调用其它构造方法,格式为:
this(参数列表);
this语句应该是构造方法中的第一条可执行语句
在成员方法中使用this
1、使用本对象的成员变量或方法,this.属性this.方法
2、把对象本身当参数传给方法,格式为:
方法(this);
4.方法覆盖与变量隐藏的区别
子类隐藏父类的变量只是使之不可见,父类的同名变量在子类对象中仍然占有自己独立的内存空间;
而子类方法对父类同名方法的覆盖将清除父类方法占用的内存,从而使父类方法在子类对象中不复存在。
5.方法覆盖与方法重载的异同
1)相同点:
二者都要求方法名相同;
二者都可以用于抽象方法和非抽象方法。
(2)不同点:
①方法覆盖要求形参列表必须一致,而方法重载要求形参列表必须不一致;
②方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有方法(包括从父类中继承而来的方法);
③方法覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制;
④方法覆盖要求返回类型必须一致,而方法重载对此不做限制;
⑤父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次。
6.对象的初始化过程
(1)无继承时的初始化过程
执行顺序即:
1、静态变量(只执行一次)
2、实例变量
3、构造方法
其中,创建几个对象,2,3就执行几次
(2)有继承时的初始化过程
组合:
在新类中,将已有类的对象作为新类的成员变量。
在新类中的成员变量是原有类的对象。
即新类的成员变量是由原有类的对象组合而成。
四、1.多态
多态:
同一操作对不同类可以呈现不同的行为。
即不同类的对象收到同一个消息可以产生完全不同的相应效果的现象。
继承使子类重用父类的代码;多态性使子类拥有与父类不同的代码,实现子类的个性差异。
2.在Java语言中,多态性体现在两个方面:
编译时多态
在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法.
运行时多态
由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。
向上转型(父类的引用指向子类的对象;子类的引用赋值给父类的引用)。
父类中的方法和成员变量的数量比子类少,因此向上转型是安全的。
向下转型是不安全的。
五、1.封装
封装:
隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。
封装提供一道屏障,将外部接口和内部实现细节分隔开来。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。
2.抽象方法的写法:
abstract返回值类型抽象方法(参数列表);
组合:
在新类中,将已有类的对象作为新类的成员变量。
在新类中的成员变量是原有类的对象。
即新类的成员变量是由原有类的对象组合而成。
1.什么是异常(Exception)?
异常是指在某些情况下,正在执行的代码块或方法无法继续进行的问题。
2.概括的说,java的异常处理机制就是如下步骤:
⏹异常的抛出
⏹异常的捕获
3.自定义异常:
程序员对特定问题,根据java规范编写的异常类
4.运行时异常RuntimeException——程序员编程错误
5.非运行时异常(程序在运行中由于特殊的环境因素导致的错误,与程序员无关。
)
6.在Java中,异常处理具体有如下方式:
(1)使用try-catch-finally语句捕获并处理异常。
(2)在方法的定义中通过throws子句声明异常
(3)用throw语句将方法中产生的异常抛出。
7.try-catch-finally语句
try{
//可能产生异常的代码放在此
}
catch(异常类名1异常对象名){//按抛出的异常对象与异常类1进行匹配,并进行处理
//在此处理异常类型1对应的异常
}
catch(异常类名2异常对象名){
//在此处理异常类型2对应的异常
}
finally{//无论异常有无发生,try或catch后一定要执行的部分
//清理资源的语句放在此处
}
示例
publicclassTestException
{
publicstaticvoidmain(String[]args)
{
try
{
intresult=newTest().devide(3,0);
System.out.println("theresultis"+result);
}
catch(ArithmeticExceptione)
{
System.out.println("programisrunninginto"+
"ArithmeticException“);
System.out.println(e.getMessage());
}
System.out.println("programisrunninghere,thatisnormal!
");
}
}
8.throws
throws关键字通常被应用在声明方法时,用来指定方法可能抛出的异常。
具体格式如下:
返回值类型方法名([形参列表])throws异常类列表
{
……
}
多个异常可使用逗号分割。
classF{
publicvoidmethod()throwsIOException,ArithmeticException{
……
}
}
9.Object类
Object类是Java程序中所有类的直接或间接父类,也是类库中所有类的父类,所有的其他类都是从Object类派生。
构造方法:
Object()
10.String类的常见方法
⏹intlength()//返回此字符串长度
例:
“Java与面向对象程序设计”.length()的值为13
⏹charcharAt(intindex)//返回指定位置的字符
例:
"Java与面向对象程序设计".charAt
(2)
注意:
起始字符的位置是0
⏹booleanstartsWith(Stringprefix)
//判断该字符串是否以prefix为前缀。
⏹booleanendsWith(Stringsuffix)
//判断该字符串是否以suffix为后缀。
⏹intindexOf(Stringstr)//返回str在当前串中开始位置
intindexOf(Stringstr,intfromIndex)
⏹intlastindexOf(Stringstr)//逆向查询子串或字符的位置
StringBuffer类的方法
⏹方法
⏹修改可变字符串(StringBuffer类的方法)
vappend(charc)
在字符串的最后追加一个字符
vappend(Strings)
在字符串的最后追加一个字符串
例如:
StringBufferst=newStringBuffer(“ab”);
st.append(“cd”);
st.append(“ef”);
同一个对象sb,不停往里加东西。
11.String与StringBuffer的比较
⏹定长字符串:
String类
v不能更改
⏹可变字符串:
StringBuffer类(使用灵活)
v可追加、插入、修改,但内存管理复杂
StringBuffer类对象是可变的字符串,有改变字符串的若干方法。
12.包装类(装箱、拆箱操作)
我们以Integer类为例。
⏹构造方法
◆Integer(intvalue):
构造一个新分配的Integer对象,它表示指定的int值。
◆Integer(Strings):
构造一个新分配的Integer对象,它表示String参数所指示的int值。
例如:
Integerd1=newInteger(3.1415926);
Integerd2=newInteger(“3.1415926”);
12.集合
集合:
类似于数组,是存放对象的聚集。
集合对象中存放的是一组对象。
换句话说,集合中的存放的元素是对象。
13.Set接口、List接口、Map接口
1.Set中的元素必须唯一。
不允许有重复的元素。
不重复是指集合中任意2个对象x和y,x.equals(y)始终为false。
注意:
⏹输出结果中集合里的元素没有按照顺序排序。
既没有按照输入顺序,也没有按照自然顺序。
⏹输出结果中没有重复元素。
如字符串3就没有重复的。
但是1有重复的,原因是这里的1是2个对象,字符串型的和基本数据类型的包装类Integer类型的。
⏹基本数据类型要插入进去需要使用我们上节课介绍的基本数据类型的包装类。
2.List接口定义了一个有序的对象集合,允许重复元素存在。
注意:
⏹放入的顺序==出来的顺序
⏹可存放重复类型的对象
⏹remove()方法可删除某位置的对象,也可删除某一个对象。
3.Collection接口表示的是单一对象的集合;即每个位置保存的是单一的对象
⏹Map中保存关键字-值(键值对的形式)这种形式的对象。
流
流就是指在计算机与输入/输出之间流动的数据序列。
⏹用流读写文件
(1)字节流
☐FileInputStream、FileOutputStream
☐DataOutputStream、DataInputStream
(2)字符流
FileReader、FileWriter
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 复习