JAVA期末复习知识点整理Word文档格式.docx
《JAVA期末复习知识点整理Word文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA期末复习知识点整理Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
命名与全局变量相同,可以使用简写,比如i,j,temp,maxNumber。
常量:
由一个或多个被下划线分开的大写单词组成,比如:
PAGE_SIZE。
6.Java数据类型的划分
整数类型
整数有三种表示形式:
十进制整数:
如123,-456,0。
十六进制整数:
以0x或0X开头,如0x123,-0X12。
八进制整数:
以0开头,如012,-027。
如果要表示长整型数,可以在数字的后面加上L或l,如125L。
浮点类型
浮点类型的数据有如下表示形式:
十进制数形式:
由数字和小数点组成,如:
,。
科学计数法形式:
如123e3或123E3。
如果表示float型的数据要在数字后加f或F,如;
表示double型的数据在数字后面加d或D,如,带小数点的数默认就是双精度浮点型,d可以省略。
布尔类型:
布尔型数据只有两个值:
true和false,在内存中占用4个字节。
7.数据类型转换
自动类型转换:
基本数据类型间的优先关系(从低到高)如下:
byte->
short->
char->
int->
long->
float->
double
强制类型转换,例如:
inti=12;
byteb=(byte)i;
//把int型变量i强制转换为byte型
其他类型转换
字符串转换为数字
例如:
(Strings)//转换为整型的数值
数字转换为字符串
(byteb):
字节型转换为字符串。
也可以使用字符串类的valueOf方法:
(各种类型的数值变量)。
还可以用空字符串连接数字,将数字转换为字符串。
"
+25。
8.数组定义与引用,初始化、下标越界;
遍历
一维数组
定义:
类型数组名[];
或类型[]数组名;
其中,类型可以为Java中任意的数据类型,包括基本类型和引用类型。
intintArray[];
//定义个整型数组
StringstringArray[];
//定义一个字符串数组
引用:
数组名[索引]索引为数组的下标,它可以为整型的常数或表达式,下标从0开始。
每个数组都有一个属性length指明它的长度,例如:
指明数组intArray的长度。
初始化
直接赋值创建
定义数组时就为数组元素赋值,数组的大小是由所赋值的个数决定。
intintArray[]={1,2,3,4};
StringstringArray[]={"
abc"
"
How"
you"
};
用new创建
inta[];
//先定义
a=newint[2];
//再创建
a[0]=4;
a[1]=7;
String[]s=newString[2];
//定义和创建一起完成
s[0]=newString("
Good"
);
s[1]=newString("
bye"
遍历
多维数组(以二维数组为例)
类型数据名[][];
或类型[][]数据名;
数组名[索引1][索引2]例如:
a[1][0];
直接赋值创建
inta[][]={{1,2},{2,3},{3,4,5}};
提示Java语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
inta[][]=newint[2][3];
//直接为每一维分配空间
Strings[][]=newString[2][];
//仅为第一维分配空间
s[0]=newString[2];
//为第二维的第一个单元分配引用空间
s[1]=newString[1];
//为第二维的第二个单元分配引用空间
s[0][0]=newString("
s[0][1]=newString("
Luck"
s[1][0]=newString("
You"
Java在定义数组时,[]可以放在数组名前面,也可以放在数组名后面。
数组在定义时不能指定大小。
9.整除、求与操作:
%/
10.字符串基本操作
字符串的创建
创建一个空的字符串
Strings1=newString();
//第一种创建空字符串方法
Strings2="
;
//第二种创建空字符串方法
直接赋值创建字符串:
Strings3="
China"
使用原有的String对象创建字符串
Strings4="
Strings5=newString(s4);
使用数组创建字符串
charch1[]={'
a'
'
b'
c'
d'
e'
Strings6=newString(ch1);
//创建字符串对象“abcde”
Strings7=newString(ch1,0,3);
//创建字符串对象“abc”//从数组下标为0开始,创建有3个字符的字符串
字符串的基本操作
字符串连接
通过contact()连接
Strings1=”abc”;
Strings2=”de”;
Strings3=(s2);
//结果为abcde
使用“+”链接,可以链接字符串和其他类型的数据,在连接时自动把其他类型的数据转换为字符串
Stringstr=”abc”+12;
//结果为”abc12”
返回长度
Stringstr1=”thisisastring”;
inta=();
替换
replace(charoldChar,charnewChar)将oldChar替换为charnewChar
replaceAll(String
regex,String
str)将字符串中匹配正则表达式的字符串替换成str
replace(‘s’,’a’));
//结果为thiaiaaatring
replaceAll(“this”,”that”));
//结果为thatisastring
查找
indexOf(Stringstr)查找str在字符串中出现的位置
lastIndexOf(Stringstr)查找str在字符串中最后出现的位置
//结果为2
结果为5
截取子串
substring(intbegin)从begin处开始取,截止到最后
substring(intbegin,intend)从begin处开始取,截止到end处
substring(0,4));
//结果为this
substring(10));
//结果为string
11.表达式合法性判断
12.三元表达式用法及简单计算【表达式A表达式B:
表达式C】
先计算表达式A的值,当值为真时,则将表达式B的值作为整个表达式的值;
反之则将表达式C的值作为整个表达式的值。
13.运算符优先级判断
14.注释用法,单行注释、多行注释和文档注释各自语法及用途
单行注释:
以“//”开头,直到行末尾。
多行注释:
以“/*”开头,直到“*/”结束,用来注释一行或多行。
文档注释:
以“/**”开头,直到“*/”结束,这是Java语言特有的注释方法,能被转化为HTML格式的帮助文档。
15.构造方法以及作用【带参数和不带参数的构造方法应用以及子类调用父类构造方法】
子类调用父类构造方法:
super([参数列表]);
构造方法的作用:
能够初始化对象的数据,在创建对象的时候,直接给对象的数据赋值
带参和不带参的构造方法(详细内容可以参考P73页案例3-2)
例如,将以下构造方法添加到类Circle中:
Circle(doubler){radius=r;
}
使用下面的语句创建圆:
myCircle=newCircle;
//正确,将赋值为
myCircle=newCircle();
//错误,因为它使用了无参的构造方法
一个类没有定义构造方法,系统会为其设置一个默认的无参构造方法,但是当类中已经定义了构造方法并且是有参数的,这时如果还用无参的构造方法建立对象就会出错。
类的构造方法遵循以下规定
构造方法与类同名。
构造方法没有返回类型,甚至连void也没有。
一个类可以有多个构造方法,但参数不同(个数或类型不同)。
如果类没有构造方法,将自动生成一个默认的无参数构造方法,并使用默认值初始化对象的属性(如,int变量初始化为0,boolean变量初始化为false)。
类的构造方法可以通过关键字this调用另一个构造方法
构造方法只能由new操作符调用
16.类及其属性、方法修饰符【访问范围】
成员的访问控制
实例变量、类变量和类常量
实例变量:
没有使用static修饰符的数据成员是实例变量,不能被同一个类里的不同变量共享。
一定要实例化。
类变量:
使用static修饰符的数据成员,想让一个类的所有实例共享数据,可使用静态变量,也称为类变量。
类常量:
一个数据成员在声明时加上关键字final,它的值就不能再被改变,因此称为常量。
如果static和final同时使用,就是类常量。
注意:
类变量的值存储在类的公用内存,如果某个对象修改了类变量的值,同一类的所有对象都会受到影响。
对于整个类来说,类变量的值只存一份。
类变量一定是静态变量。
全局变量和局部变量
全局变量:
实例变量和类变量(类变量一定是静态变量)
局部变量:
在方法内部说明的变量
全局变量的作用域是所有实例方法,局部变量的作用域从它的说明开始延续到包含它的块尾。
全局变量不赋值有默认初值,但局部变量没有默认初值的,使用时必须赋初值。
全局变量只能声明一次,但在一个方法互不嵌套的块内,可以多次声明同一个局部变量。
局部变量与全局变量同名时,局部变量优先,同名的全局变量被隐藏。
在构造方法中可使用this调用其他构造方法。
例如,圆的默认构造方法中使用this调用有参的构造方法。
实例方法(非静态方法)和类方法(静态方法)(判断题常考)
实例方法:
没有使用static修饰符的方法为实例方法,实例方法必须通过对象来调用,不可以通过类名调用。
类方法:
在定义的时候加上static修饰符,就是类方法。
类方法可以通过类名调用,也可以通过对象调用。
类方法只能操作类变量,实例方法既可以操作实例变量也可以操作类变量。
静态方法可以调用非静态方法,但是非静态方法不能调用静态方法
17.修饰符混用:
abstract不能与final并列修饰同一个类【正确】
abstract类中不可以有private的成员【正确】
abstract方法必须在abstract类中【错误】
static方法中能处理非static的属性【正确】
18.抽象方法、抽象类
抽象类:
Java语言中,用abstract关键字来修饰一个类时,这个类称为抽象类。
抽象类的定义格式如下:
[修饰符]abstractclass类名
{类体}
注意:
抽象类可以包含抽象方法,也可以不包含抽象方法。
但是包含抽象方法的类必须定义成抽象类。
(判断题常考)
抽象类不能被实例化,抽象类可以被继承,不能被定义成final类。
继承抽象类的类必须实现抽象类的抽象方法,否则,也必须定义成抽象类。
一个类实现某个接口,但没有实现该接口的所有方法,这个类必须定义成抽象类。
抽象方法:
用abstract关键字来修饰一个方法时,这个方法称为抽象方法。
[修饰符]abstract返回值类型方法名([参数列表]);
抽象方法只有声明,没有实现。
19.方法的覆盖:
子类中的某个方法与父类的某个方法说明(指名称、参数和返回值类型)一样。
在覆盖的情况下,子类将使用自己的方法。
关于覆盖,需要注意以下几点:
一个方法将方法的父类实现替换为自己的实现,其说明必须和父类方法说明相同,但返回类型可以按照某种特定的方式变化。
如果返回类型是引用类型,则覆盖方法的返回类型可以声明为父类方法声明的返回类型的子类型;
如果返回类型是基本类型,则覆盖方法的返回类型必须和父类方法的返回类型相同。
覆盖方法有自己的访问修饰符,但只限于提供同样或更多的访问权限。
覆盖方法的throws子句可以和父类方法有所不同,它列出的每一个异常类型都应该和超类中的异常类型相同,或者是父类异常类型的子类型。
不能用子类的静态方法覆盖父类中的实例方法。
带关键字final的方法不能被覆盖。
抽象方法必须在子类中被覆盖,否则子类也必须是抽象的。
20.接口的继承的特点:
可以多继承,例如:
interfaceIChineseWelcome{
StringCHINESE_MSG="
你好,欢迎你!
//定义常量
voidsayChinese();
}
interfaceIEnglishWelcome{
StringENGLISH_MSG="
Hello,Welcome!
voidsayEnglish();
interfaceIWelcomeextendsIChineseWelcome,IEnglishWelcome{//继承接口
StringENGLISH_AND_CHINESE_MSG="
你好,欢迎你!
voidsayChineseAndEnglish();
定义接口的注意事项
只包含常量和抽象方法,不能包含变量和具体的方法
常量都是publicstaticfinal类型,方法都是publicabstract类型
接口的使用:
在类的声明中用implements子句来表示它所实现的接口。
实现某接口的类,必须实现接口中定义的所有方法,否则需定义成抽象类。
在类体中可以使用接口中定义的常量。
一个类可以实现多个接口,在implements子句中用逗号分开。
21.接口与抽象类的区别
抽象类可提供某些方法的实现,而接口的方法都是抽象的
抽象类可以包含变量,而接口中不能包含变量,可以包含常量
抽象类中的成员可以有多种权限,而接口中的成员只能是public
抽象类中增加一个具体的方法,则子类都具有此具体方法,而接口中增加一个方法,则子类必须实现此方法
子类最多能继承一个抽象类,而接口可以继承多个接口,一个类也可以实现多个接口
抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则,无关的类也可以实现同一接口
22.类的继承【子类访问父类变量和方法问题、变量隐藏】特点
类的继承(关键字:
extends)特点
如果类B是类A的子类,则类B继承了类A的变量和方法。
在子类B中,包括了两部分内容:
从父类A中继承下来的变量和方法,自己新增加的变量和方法。
在Java中类只支持单一继承,不支持多重继承,接口可祢补这方面的一些缺陷。
继承是可传递的。
如果C从B派生,而B从A派生,那么C就会既继承在B中声明的成员,又继承在A中声明的成员。
派生类可扩展它的直接基类,添加新的成员,但不能移除父类中定义的成员。
除构造方法外,其他非私有成员都可以被继承。
私有数据成员虽然不能被继承,但在派生类中可以通过公有方法间接访问。
派生类可以通过声明具有相同说明的新成员来隐藏那个被继承的成员。
但隐藏继承成员并不移除该成员,它只是使被隐藏的成员在派生类中不可直接访问。
子类对父类成员的继承
父类中用public修饰的公有成员,子类可继承,子类内部可以直接使用,外界也可以通过子类使用。
父类中用private修饰的私有成员,子类不能继承,子类内部不能直接使用,外界也不能通过子类对象使用。
但是,如果父类提供公有方法(如属性方法),在子类内部可以间接使用。
父类中用protected修饰的保护成员,子类可以继承,子类内部可以直接使用,外界仅限于同一包类中的类可以使用。
23.多态性:
多态性是指允许不同类的对象对同一消息作出不同的响应。
24.子类调用父类相同名字的变量和方法。
super关键字:
关键字this指类的实例自己,而关键字super指父类。
调用父类的构造方法:
super(参数名);
父类的构造方法不传给子类,他们只能用关键字super在子类的构造方法中调用
super语句必须是第一条语句
如果没有显式的使用super调用父类构造方法,就总是调用父类的默认构造方法
调用父类的方法:
();
子类中的某个方法与父类的某个方法说明(名称、参数和返回值类型)一样,在子类中将使用自己的方法,这时如果还想使用父类的方法,就需要使用super
25.创建对象数量问题:
【1】Strings1="
bc"
Strings2="
创建了一个对象
【2】Strings1="
Strings2=newString("
创建了两个对象
26.方法返回类型及方法的定义
27.final修饰的特点:
final修饰的量是常量,在程序的运行过程中不改变。
finalintNUM=100;
只读
final修饰的类是最终类,当一个类定义后,不需要再进行扩展,可以定义成最终类。
最终类的声明方法是在类名前加上final修饰符。
修饰符abstract和final不能同时使用
28.静态变量和非静态变量
静态变量:
通过类名直接访问
非静态变量:
实例变量,一定要实例化
29.abstract和final修饰符
30.编程题【类、抽象类、接口的定义及使用,类的继承,多看例题】
类P73案例3-2
类的继承P90案例3-6
接口的定义和使用P96
例题:
编写一个student类,里面有name,id,sex,age等属性。
写方法获得name,id,sex,age等。
写一个toString(方法)
packageexam;
publicclassStudent{
intid;
intage;
Stringname;
booleansex;
//无参构造函数
publicStudent(){
super();
//有参构造函数
publicStudent(intid,intage,Stringname,booleansex){
=id;
=age;
=name;
=sex;
publicintgetId(){
returnid;
publicintgetAge(){
returnage;
publicStringgetName(){
returnname;
publicbooleanisSex(){
returnsex;
publicStringtoString(){
return("
姓名:
+getName()+"
学号:
+getId()+"
年龄:
+getAge()+"
性别"
+isSex());