Java考试复习资料Word下载.docx
- 文档编号:17031701
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:30
- 大小:260.06KB
Java考试复习资料Word下载.docx
《Java考试复习资料Word下载.docx》由会员分享,可在线阅读,更多相关《Java考试复习资料Word下载.docx(30页珍藏版)》请在冰豆网上搜索。
extendsfalsefinalfloatforfinally
importimplementsintinterfaceinstanceoflonglengthnativenewnullpackage
privateprotectedpublicfinalreturnswitchsynchronizedshortstaticsupertrytrue
thisthrowthrowsthreadsafetransientvoidwhileif
保留字注意事项:
Java中,true、false和null都是小写的。
区别于C++中大写的TRUE、FALSE和NULL。
不能更改或重复定义保留字,也不能将Java保留字用作用户自定义标示符
•变量
与C++不同,作为类里定义的变量,其默认初值都是确定的,但是在方法(函数)实现中定义的变量必须程序员
分区Java的第1页
自己初始化。
•
常量
常量是用某些特征含义的标识符表示某些不变化的数值。
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
Arrays.sort(b);
//对b进行排序
System.out.println(Arrays.binarySearch(b,3));
//使用二分查找法查找3的位置
classEx2_7{
char[]copyFrom={'
d'
'
e'
c'
a'
f'
'
i'
n'
t'
};
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()实现数组的复制
//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.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)
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){
捕获try代码块所产生的异常并做相应的处理,exceptiontype必须是一个从Throwable类派生出来的类的名称。
}finally{
必须执行的代码
捕获异常的顺序会影响到异常的处理,在类层次结构中,一般的异常类型要放在后面,特殊的放在前面。
printStackTrace(),它是从类Throwable中继承而来,调用此方法将会打印出“从方法调用处直到异常抛出处”的方法调用序列。
声明抛出异常——检查型异常处理方法2
如果在一个方法中生成了异常,但是该方法并不处理它产生的异常,而是沿着调用层次向上传递,交由调用它的方法来处理这些异常,这就是声明
抛出异常。
声明异常的方法
声明异常的方法是在产生异常的方法名后面加上关键字throws,后面接一个所有潜在异常类型的列表:
voidfunc()throwsExceptionA,ExceptionB,ExceptionC{
……
publicclassEx4_6{
publicstaticvoidmain(Stringargs[])throwsNumberFormatException,IOException{//在main里抛出异常
分区Java的第9页
Productipad=newProduct();
BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));
请输入productID:
"
);
ipad.ID=Integer.parseInt(in.readLine());
请输入productname:
ipad.name=in.readLine();
请输入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)
*****incase"
+sel+"
*****"
if(sel==0)//没有异常
noExceptioncaught"
return;
elseif(sel==1)
try{
inti=0;
intj=5/i;
//除数为零
thrownewArithmeticException();
//显示地抛出异常ArithmeticException对象显
}
catch(ArithmeticExceptione)
System.out.println(e.toString());
elseif(sel==2)
intiArray[]=newint[4];
iArray[10]=5;
//数组越界
thrownewArrayIndexOutOfBoundsException();
//显示地抛出异常ArrayIndexOutOfBoundsExceptionn对象
catch(ArrayIndexOutOfBoundsExceptione)
分区Java的第10页
publicclassEx4_7{
publicstaticvoidmain(Stringargs[])
Processpp=newProcess();
pp.Proc(0);
//调用proc
pp.Proc
(1);
pp.Proc
(2);
}catch(ArithmeticExceptione){
Catch:
"
+e+"
;
Reason:
+e.getMessage());
}catch(ArrayIndexOutOfBoundsExceptione){
}catch(Exceptione){
Willnotbeexecuted"
}finally{
mustgoinsidefinally"
【例4-8】以电子商场例子为例,产品价格如果少于100元就不符合常规了,可以定义一个异常类来描述这种异常。
//Product.java
importjava.io.*;
classProduct{
doubleProductPrice;
intgetID(){
returnID;
StringgetName(){
returnname;
StringgetCategories(){
returncategories;
doublegetPrice(){
returnProductPrice;
classPriceExceptionextendsException{
publicPriceException(){
thepriceistoolow!
!
publicclassEx4_8{
publicstaticvoidmain(Stringargs[]){
ipad.ID=123;
ipad.name="
ipad2"
ipad.ProductPrice=50;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 考试 复习资料