Java考试复习资料.docx
- 文档编号:4115677
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:30
- 大小:260.06KB
Java考试复习资料.docx
《Java考试复习资料.docx》由会员分享,可在线阅读,更多相关《Java考试复习资料.docx(30页珍藏版)》请在冰豆网上搜索。
Java考试复习资料
Java考试复习资料
第一章Java语言程序设计
1.java命令行参数
2.Java程序书写规范:
•包、类、变量、方法等命名:
要体现各自的含义;
•包名全部小写,io,awt;
•类名第一个字母要大写:
HelloWorldApp;
•变量名第一个字母要小写:
myName;
•方法名第一个字母要小写:
setName;
•程序书写格式:
保证良好的可读性,使程序一目了然。
•大括号{}要对齐,语句段要对齐
•在语句段之间适当空行
•程序注释:
帮助了解程序的功能。
•类注释
•变量注释
•方法注释
•语句注释
•语句段注释
•建议:
一个类一个.java文件
第二章
Java语言基础知识
标识符(identifier):
需要命名的元素包括:
类名、变量名、常量名、方法名…。
标识符的长度不限,但第一个字符必须是这些字符之一:
大写字母(A-Z)
小写字母(a-z)
下划线
$符号
标识符的第二个字符及后继字符可以包括数字字符(0-9)
•保留字
也称为关键(key)字,由小写的英文字母组成,赋予这些保留字专门的意义和用途,程序员不能再用作用户自
定义标识符。
abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelse
extendsfalsefinalfloatforfinally
importimplementsintinterfaceinstanceoflonglengthnativenewnullpackage
privateprotectedpublicfinalreturnswitchsynchronizedshortstaticsupertrytrue
thisthrowthrowsthreadsafetransientvoidwhileif
保留字注意事项:
Java中,true、false和null都是小写的。
区别于C++中大写的TRUE、FALSE和NULL。
不能更改或重复定义保留字,也不能将Java保留字用作用户自定义标示符
•变量
与C++不同,作为类里定义的变量,其默认初值都是确定的,但是在方法(函数)实现中定义的变量必须程序员
分区Java的第1页
与C++不同,作为类里定义的变量,其默认初值都是确定的,但是在方法(函数)实现中定义的变量必须程序员
自己初始化。
•
常量
常量是用某些特征含义的标识符表示某些不变化的数值。
C通过#define命令把一个标识符定义为常量;
C++用const定义常量;
Java用关键字final来定义;
•
Java数据类型
•
数据类型转换
数据类型可以自动类型转换,int、long、float数据可以混合运算。
转换从低级到高级:
低------------------------------------------------------------->高
byte,short,char—>int—>long—>float—>double
inti=10;
byteb=(byte)i;
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
(int)25.7=25;
(int)-42.87f=-42;
•
2.3.1数组
分区Java的第2页
•
•
(1)数组的声明与创建
声明(Declaration)
使用数组前必须对它进行声明。
不能直接使用,必须经过初始化分配内存后才能使用!
•
(2)数组元素的初始化
Java中创建数组的时,如果没有指定初始值,数组便被赋予默认值初始值。
importjava.util.*;
publicclassEx2_6{
/**
*@paramargs
*/
int[]a=newint[]{1,3,5,7};
(4)二维数组
下面语句使数组的3个元素分别又是三个整型数组,每个元素里有含有5个整数。
int[][]myArray=newint[3][5];
(5)数组类的方法
Arrays是Java类库提供的一个标准包,位于java.util,包含了很多静态成员方法。
【例2-6】Arrays类常用方法的使用
packagechpt2;
//arrays里的方法使用
publicstaticvoidmain(String[]args){
int[]a1=newint[]{1,3,5,7};
System.out.println(Arrays.equals(a,a1));//判断a和a1是否相等,输出true
分区Java的第3页
}
}
输出结果:
true
false
int[]b=Arrays.copyOf(a,6);
System.out.println(Arrays.equals(b,a1));//输出false
System.out.println("=========");
System.out.println(Arrays.toString(b));//把数组转换成字符串输出
Arrays.fill(b,2,5,1);//把第二个到第四个元素赋为1
System.out.println(Arrays.toString(b));
Arrays.sort(b);//对b进行排序
System.out.println(Arrays.toString(b));
System.out.println(Arrays.binarySearch(b,3));//使用二分查找法查找3的位置
classEx2_7{
char[]copyFrom={'d','e','c','a','f','f','e',
'i','n','a','t','e','d'};
System.out.println(newString(copyTo));
}
=========
[1,3,5,7,0,0]
[1,3,1,1,1,0]
[0,1,1,1,1,3]
5
【例2-7】arraycopy()实现数组的复制
packagechpt2;
publicstaticvoidmain(String[]args){
//13个元素
char[]copyTo=newchar[7];
System.arraycopy(copyFrom,2,copyTo,0,7);
}
输出结果:
caffein
voidjava.lang.System.arraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)
2.4基本数据类型的封装类
•Java中,除了引用类型外,基本数据类型也被封装为引用类型。
•在Java库中,8种基本数据类型都有一个相应的,预定的引用类型。
•例如,其中存在一个相应于整数的java.lang.Interger,这些类类型称为对象封装(objectwrappers)。
(1)封装类的使用
分区Java的第4页
(2)生成封装类对象的方法
(3)从封装类数据转换为基本数据类型数据的方法
2.6.2循环结构
foreach语句
JDK1.5后,增添了一种新的foreach循环语句。
foreach语句是for语句的特殊简化版本,利用新的foreach语句,可遍历数组、集合。
格式如下:
foreach的语句格式:
for(元素类型t元素变量x:
遍历对象obj){
引用了x的java语句;
}
第3章类与对象
分区Java的第5页
第3章类与对象
3.3数据成员及方法
3.3.2方法中参数传递的问题
•参数的类型可以是基本数据类型,也可以是引用(类)类型。
•Java语言中,基本数据类型作为参数均采用传值(passing–by-value)的方式完成。
•引用类型变量作为参数传递时,采用的是引用传递(passing-by-reference)的方式,在方法体中对形参的改动将会影响到实参。
3.3.3toString()方法
StringtoString()是一个经常用到的方法,当需要把一个对象输出到屏幕,就要用到此方法。
实际上,Java的所有类都有一个默认的toString()
例3-3
System.out.println(ipad)语句就等价于System.out.println(ipad.toString())
publicclassProduct{
intID;
Stringname;
Stringcategories;
doubleproductPrice;
Product(intid,Stringnm,Stringcateg,doubleprice)
{
ID=id;
name=nm;
categories=categ;
productPrice=price;
}
Product(){}
publicStringtoString(){
return("Product"+ID+","+name+","+catagories+","+productPrice);
}
}
如果直接调用默认的toString(),返回结果形式为:
•对象类的名字@对象的地址
例如编译后运行结果如下:
Product@19efb05
重写toString()方法的实现部分,“覆盖”掉从Object继承来的toString(),将对象的内容转换为字符串。
声明toString时需要注意以下事项:
toString()必须为public;
返回类型为String;
方法的名称必须为toString,且没有参数;
在方法体中不要使用输出方法System.out.println();
3.4.3final修饰符
对于final修饰的引用,只是引用不能再指向其他对象,但其所指对象的属性还是可以被修改的.
final在类之前
表示该类是最终类,不能再被继承。
final在方法之前
表示该方法是最终方法,该方法不能被任何派生的子类覆盖。
final在变量之前
表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。
应该是引用不变,也就是引用指向指定的对象,不能再指向其它的对象。
至于对象中的值还是可以改变的,因为final关心的是地址,而不是对象
当中的值。
3.4.4方法重载
分区Java的第6页
3.4.6对象的回收
与C++不同,Java额外提供了垃圾回收器(garbagecollector)
对于不再使用的内存资源,垃圾回收器能自动将其释放,无需使用delete
无需再使用类似C++里的析构函数destructor。
3.4.8类的访问控制
访问权限控制的等级,从最大权限到最小权限依次为:
public
protected
包访问权限(没有关键字)
private.
公有(public):
可以被其他任何对象访问(前提是对类成员所在的类有访问权限)
保护(protected):
只可被同一类及其子类的实例对象访问
私有(private):
只能被这个类本身访问,在类外不可见
包访问权限:
默认访问权限,仅允许同一个包内的访问
需要注意的是类的访问控制只有public(公共类)及包(默认类)两种,没有私有。
3.5.1语言包java.lang
3、变量字符串类StringBuffer
StringBuffer类也是用来处理字符串。
String定义的常量字符串,一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储;
而StringBuffer类在实例化StringBuffer之后,可以改动其中的字符。
4、math类
Math类提供了用于几何学、三角学以及几种一般用途方法的浮点函数,来执行很多数学运算。
Math类定义的所有变量和方法是静态的,是终结
类(final)。
第4章异常处理(Exception)
Java的异常处理
Java通过面向对象的方法来处理异常(Exception)。
Java把程序中可能出现的各类异常封装为类。
提供了自动检测出异常,并处理异常的机制。
Java尽可能地为各类异常提供解决方案,这些处理异常的代码块称为exceptionhandler;
Java把常规代码和异常处理代码分开。
try
{//常规代码段
ConnectDB;
FetchData;
GetResult;
DisconnectDB;
}
catch(FailedtoConnectDB){dosomething}
catch(FailedtoFetchData){dosomething}
catch(FailedtoGetResult){dosomething}
分区Java的第7页
catch(FailedtoGetResult)
{dosomething}
catch(FailedtoDisconnectDB)
{dosomething}
4.2异常的分类
Java中,所有的异常都直接或间接地继承自Throwable类。
JavaAPI的每个类包中都定义异常类,这些异常类分成两大类:
•Error类,是所有错误类的父类,处理致命性的,用户程序无法处理;
•Exception类,是所有异常类的父类,是Java程序中需要大量处理的。
Error:
应用程序外部的异常情况,由Java虚拟机生成并抛出,包括
•硬件故障
•动态链接失败
•虚拟机错误等
Java程序不做处理。
Exception:
非检查型异常(Non-checkedException)
•继承自RuntimeException
•也称为“运行时库”异常,例如数组越界,除零等;
•由系统自动检测出异常,自动报错,提供默认的异常处理程序。
检查型异常(chekedexception)
•即其他类型的异常,需要手动检查在什么位置引发的,何处能够捕获或处理以及如何处理;
•程序中必须要作处理,或者捕获,或者声明抛弃。
4.3异常的处理机制
无论是检查型异常还是非检查型异常,针对可能出现的异常,用户程序必须做出选择
(1)或者在异常出现的方法中处理该异常(try…catch…)。
(2)如果该方法中没有做出任何处理,就把异常抛给调用该方法的上一层方法,沿着被调用的顺序往前寻找,只要找到符合该异常种类的处理程
序,就交给这部分程序去处理。
分区Java的第8页
4.3.2检查型异常处理
对于检查型异常,Java强迫程序必须进行处理。
应该根据具体的情况选择在何处处理异常。
两种处理方法:
•捕获异常(try,catch语句)
○使用try{}catch(){}块,捕获到所发生的异常,并进行相应的处理
•声明抛出异常(throws语句)
○不在当前方法内处理异常,而是把异常抛出到调用方法中由上层方法作处理。
语法格式
try{
statement(s)
可能产生异常的代码块
}catch(exceptiontypename){
statement(s)
捕获try代码块所产生的异常并做相应的处理,exceptiontype必须是一个从Throwable类派生出来的类的名称。
}finally{
statement(s)
必须执行的代码
}
捕获异常的顺序会影响到异常的处理,在类层次结构中,一般的异常类型要放在后面,特殊的放在前面。
printStackTrace(),它是从类Throwable中继承而来,调用此方法将会打印出“从方法调用处直到异常抛出处”的方法调用序列。
•
•
声明抛出异常——检查型异常处理方法2
如果在一个方法中生成了异常,但是该方法并不处理它产生的异常,而是沿着调用层次向上传递,交由调用它的方法来处理这些异常,这就是声明
抛出异常。
声明异常的方法
声明异常的方法是在产生异常的方法名后面加上关键字throws,后面接一个所有潜在异常类型的列表:
voidfunc()throwsExceptionA,ExceptionB,ExceptionC{
……
}
publicclassEx4_6{
publicstaticvoidmain(Stringargs[])throwsNumberFormatException,IOException{//在main里抛出异常
分区Java的第9页
}
publicstaticvoidmain(Stringargs[])throwsNumberFormatException,IOException{//在main里抛出异常
Productipad=newProduct();
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
System.out.println("请输入productID:
");
ipad.ID=Integer.parseInt(in.readLine());
System.out.println("请输入productname:
");
ipad.name=in.readLine();
System.out.println("请输入productcategoriese:
");
ipad.categories=in.readLine();
}
•
•
•
4.4自定义异常类
有些异常在jvm看来不是异常,需要自己手动引发异常,用new生成自己的异常对象,然后把它throw出来。
注意是throw不是throws
生成异常对象通过throw语句来实现(注意:
这里是throw而不是throws):
thrownewThrowableObject();
或者
myExceptione=newmyException();
throwe;
抛出的异常必须是Throwable或其子类的对象
•
【例4-7】使用try、throw、catch处理三种情形:
无异常、除数为零、数组越界可能产生的异常。
packagechpt4;
classProcess{
voidProc(intsel)
{
System.out.println("*****incase"+sel+"*****");
if(sel==0)//没有异常
{
System.out.println("noExceptioncaught");
return;
}
elseif(sel==1)
{
try{
inti=0;
intj=5/i;//除数为零
thrownewArithmeticException();//显示地抛出异常ArithmeticException对象显
}
catch(ArithmeticExceptione)
{
System.out.println(e.toString());
}
}
elseif(sel==2)
{
try{
intiArray[]=newint[4];
iArray[10]=5;//数组越界
thrownewArrayIndexOutOfBoundsException();//显示地抛出异常ArrayIndexOutOfBoundsExceptionn对象
}
catch(ArrayIndexOutOfBoundsExceptione)
{
System.out.println(e.toString());
}
}
分区Java的第10页
}
}
}
•
publicclassEx4_7{
publicstaticvoidmain(Stringargs[])
{
Processpp=newProcess();
try
{
pp.Proc(0);//调用proc
pp.Proc
(1);
pp.Proc
(2);
}catch(ArithmeticExceptione){
System.out.println("Catch:
"+e+";Reason:
"+e.getMessage());
}catch(ArrayIndexOutOfBoundsExceptione){
System.out.println("Catch:
"+e+";Reason:
"+e.getMessage());
}catch(Exceptione){
System.out.println("Willnotbeexecuted");
}finally{
System.out.println("mustgoinsidefinally");}
}
}
【例4-8】以电子商场例子为例,产品价格如果少于100元就不符合常规了,可以定义一个异常类来描述这种异常。
packagechpt4;
//Product.java
importjava.io.*;
classProduct{
intID;
Stringname;
Stringcategories;
doubleProductPrice;
intgetID(){
returnID;
}
StringgetName(){
returnname;
}
StringgetCategories(){
returncategories;
}
doublegetPrice(){
returnProductPrice;
}
}
classPriceExceptionextendsException{
publicPriceException(){
System.out.println("thepriceistoolow!
!
!
");
}
}
publicclassEx4_8{
publicstaticvoidmain(Stringargs[]){
Productipad=newProduct();
ipad.ID=123;
ipad.name="ipad2";
ipad.ProductPrice=50;
try{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 考试 复习资料