《Java程序设计》期末复习完全手册(直接使用版)_第1页
《Java程序设计》期末复习完全手册(直接使用版)_第2页
《Java程序设计》期末复习完全手册(直接使用版)_第3页
《Java程序设计》期末复习完全手册(直接使用版)_第4页
《Java程序设计》期末复习完全手册(直接使用版)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Java程序设计》期末复习完全手册(直接使用版)第一部分:考试题型与分值分布(通用)题型题量分值主要考查范围策略选择题20-25题20-30分Java语法、面向对象概念、访问权限、集合与泛型、异常机制辨析概念,牢记规则填空题10-15题10-15分关键字填写、程序完善、常用类方法、修饰符根据上下文和功能要求填入正确关键字或语句程序阅读题3-5题15-20分继承多态、接口实现、字符串操作、集合遍历、异常执行流程逐句模拟,画继承链和对象类型程序填空题2-3题10-15分类定义、接口实现、异常处理、线程创建关注语法细节:分号、括号、关键字正确拼写编程题2-3题20-30分类设计与实现、继承多态应用、集合与泛型、简单算法先搭类框架再细化方法,注意命名规范和边界条件第二部分:Java语言基础速查2.1Java程序基本结构publicclassHelloWorld{

publicstaticvoidmain(String[]args){

System.out.println("Hello,Java!");

}

}源文件扩展名:.java,编译后为.class(字节码)。一个源文件最多一个public类,且类名与文件名相同。入口方法:publicstaticvoidmain(String[]args)2.2标识符与关键字项目规则标识符字母、数字、下划线、$组成;不能以数字开头;区分大小写;不能是关键字关键字50个保留字,如class、public、static、void、int、new、extends、implements等2.3基本数据类型类型关键字字节数默认值说明字节型byte10-128~127短整型short20整型int40默认整数类型长整型long80L赋值加L浮点型float40.0f赋值加f双精度double80.0d默认浮点类型字符型char2'\u0000'Unicode编码,可中文布尔型boolean1位(逻辑)false只有true/false,不能与整型转换2.4变量与常量inta=10;//变量

finaldoublePI=3.14;//常量(final修饰)2.5运算符优先级(从高到低常考)优先级运算符1()[].2!~++--3*/%4+-5<<>>>>>6<><=>=instanceof7==!=8&9^10|11&&12||13?:14=+=-=等注意:==比较基本类型值;比较对象内容用equals()。2.6控制语句与C语言类似:if-else、switch(支持String类型)、while、do-while、for、增强forfor(类型变量:集合/数组)。break和continue同C。2.7数组int[]arr=newint[5];//动态初始化

int[]arr2={1,2,3,4,5};//静态初始化

int[][]matrix=newint[3][4];//二维数组

System.out.println(arr.length);//数组长度属性第三部分:面向对象核心速查(考试重点)3.1类与对象publicclassStudent{

//成员变量(属性)

privateStringname;

privateintage;

//构造方法

publicStudent(Stringname,intage){

=name;

this.age=age;

}

//成员方法

publicStringgetName(){returnname;}

publicvoidsetAge(intage){this.age=age;}

}

//创建对象

Studentstu=newStudent("张三",20);构造方法:名称与类名相同,无返回值,可重载。若未定义,系统提供无参默认构造;一旦自定义有参构造,默认构造消失(需要时手动写出)。this关键字:引用当前对象。区分成员变量和局部变量;调用本类其它构造方法this(参数)必须在第一行。3.2封装与访问修饰符修饰符类内部同包子类其他包private✓✗✗✗default(无修饰符)✓✓✗✗protected✓✓✓✗public✓✓✓✓3.3继承publicclassPerson{...}

publicclassStudentextendsPerson{...}Java单继承,一个类只能有一个直接父类。子类不能继承父类的构造方法,但可通过super()调用。所有类都隐式继承自Object类。方法重写(Override):子类覆盖父类方法,要求方法签名相同,访问权限不缩小,抛出异常不扩大。推荐使用@Override注解。3.4super关键字super(参数)调用父类构造方法,必须在子类构造方法第一行(与this互斥)。super.方法名()调用父类被覆盖的方法。3.5多态条件:继承+方法重写+父类引用指向子类对象。Personp=newStudent();//向上转型

p.show();//调用的是子类重写的方法(若重写)编译看左边,运行看右边(对于成员方法)。成员变量和静态方法没有多态性(编译和运行都看左边)。向下转型:需要强制转换Students=(Student)p;,前提是实际对象类型一致,否则ClassCastException。可用instanceof判断。3.6抽象类与接口对比项抽象类接口关键字abstractclassinterface方法可有抽象方法(无方法体)和具体方法默认抽象方法(Java8后可含default/static方法)变量可声明成员变量只能声明常量(publicstaticfinal)构造方法有没有继承单继承extends可多实现implements,接口可多继承接口实例化不能实例化不能实例化3.7内部类成员内部类:定义在类中,可访问外部类的私有成员。创建对象:Outer.Innerin=newOuter().newInner();静态内部类:用static修饰,只能访问外部类静态成员。Outer.Innerin=newOuter.Inner();局部内部类:定义在方法内,作用域仅限于方法内。匿名内部类:没有名字,用于实现接口或继承类,常在事件处理中使用。第四部分:常用类速查4.1String类(不可变字符串)方法说明示例length()字符串长度"abc".length()→3charAt(index)指定索引字符"abc".charAt(1)→'b'equals(obj)比较内容是否相等"abc".equals("abc")→truesubstring(start,end)截取子串(含start,不含end)"hello".substring(0,2)→"he"indexOf(str)查找子串位置"hello".indexOf("ll")→2split(regex)按规则分割"a,b,c".split(",")→{"a","b","c"}trim()去首尾空白toCharArray()转为字符数组valueOf(基本类型)基本类型→字符串String.valueOf(123)→"123"4.2StringBuffer/StringBuilder(可变字符串)StringBuffer:线程安全,效率稍低。StringBuilder:非线程安全,效率高。常用方法:append(),insert(),delete(),reverse(),toString()4.3包装类与自动装箱拆箱基本类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean自动装箱:Integeri=10;自动拆箱:inta=i;字符串转换:Integer.parseInt("123")→123;Integer.toString(123)→"123"第五部分:异常处理速查5.1异常分类Throwable

├──Error(严重问题,不强制处理)

└──Exception

├──RuntimeException(运行时异常,非检查异常)

│如:NullPointerException,ArrayIndexOutOfBoundsException,

│ArithmeticException,ClassCastException

└──其他Exception(编译时异常/检查异常)

如:IOException,SQLException,FileNotFoundException5.2异常处理结构try{

//可能出错的代码

}catch(异常类型1e){

//处理异常1

}catch(异常类型2e){

//处理异常2

}finally{

//总是执行的代码(释放资源等)

}多个catch时,先具体后一般,父类异常不能放在子类前面。finally即使遇到return也会执行(除非System.exit(0))。throws声明方法可能抛出的异常;throw手动抛出异常。第六部分:集合框架速查6.1接口与实现类接口实现类特点List(有序、可重复)ArrayList底层数组,查询快,增删慢,线程不安全LinkedList底层双向链表,增删快,查询慢Set(无序、不可重复)HashSet哈希表,不保证顺序TreeSet红黑树,元素排序Map(键值对)HashMap键不可重复,允许一个null键TreeMap键排序6.2常用方法List:add(e),get(index),remove(index),size(),contains(e),indexOf(e)Set:add(e),remove(e),contains(e),size()Map:put(k,v),get(k),remove(k),containsKey(k),keySet(),values()6.3遍历方式//增强for

for(Strings:list){...}

//迭代器

Iterator<String>it=list.iterator();

while(it.hasNext()){

Strings=it.next();

}

//Map遍历键值对

for(Map.Entry<K,V>entry:map.entrySet()){

Kkey=entry.getKey();

Vvalue=entry.getValue();

}6.4泛型List<String>list=newArrayList<>();//JDK7+钻石语法作用:将类型检查提前到编译时,避免类型转换异常。第七部分:输入输出流(IO)速查7.1流分类方向输入流输出流字节流InputStreamOutputStream字符流ReaderWriter常用实现类:字节文件流:FileInputStream,FileOutputStream缓冲字节流:BufferedInputStream,BufferedOutputStream字符文件流:FileReader,FileWriter缓冲字符流:BufferedReader(readLine()),BufferedWriter7.2文件读写示例//读文件

try(BufferedReaderbr=newBufferedReader(newFileReader("test.txt"))){

Stringline;

while((line=br.readLine())!=null){

System.out.println(line);

}

}catch(IOExceptione){e.printStackTrace();}

//写文件

try(BufferedWriterbw=newBufferedWriter(newFileWriter("out.txt"))){

bw.write("Hello");

bw.newLine();

}catch(IOExceptione){e.printStackTrace();}JDK7引入的try-with-resources自动关闭资源。第八部分:多线程速查8.1创建线程方式方式步骤启动继承Thread类重写run()方法创建对象后调用start()实现Runnable接口实现run()方法,作为参数传给ThreadnewThread(runnable).start()推荐使用实现Runnable接口(避免单继承局限)。8.2线程同步使用synchronized关键字修饰方法或同步代码块,防止多线程并发访问共享资源。publicsynchronizedvoidmethod(){...}

synchronized(obj){...}第九部分:高频选择题题库(40题)模块一:语言基础题号题目选项A选项B选项C选项D答案1下面哪个是Java合法标识符2name_testclassa-bB2main方法正确签名是publicvoidmain(String[]args)publicstaticvoidmain(Stringargs)publicstaticvoidmain(String[]args)staticvoidmain(String[]args)C3设inta=5;则a++的结果是5640A4编译Java源程序产生的文件扩展名是.java.exe.class.objC5下面哪个不是基本数据类型intdoubleStringbooleanC6运算:5/2结果是2.5232.0B7==用于比较两个对象时,比较的是对象的内容对象的地址对象的类型字符串长度B模块二:面向对象题号题目选项A选项B选项C选项D答案8构造方法的名字必须与类名相同自定义小写无限制A9以下关于继承描述正确的是Java支持多重继承子类可以继承父类的构造方法所有类都继承自Objectfinal类可以被继承C10方法重写的规则是方法名相同参数列表不同方法名相同参数列表相同返回类型相同方法名相同参数列表相同访问权限更严格无限制B11多态实现必须满足的条件不包括继承重写父类引用指向子类对象静态方法D12关于抽象类,正确的是抽象类能被实例化抽象类中不能有具体方法有抽象方法的类必须是抽象类抽象类不能被继承C13接口中的方法默认修饰符是privateprotectedpublicabstractstaticC14访问修饰符private的含义是所有类都可访问同包可见本类可见子类可见C模块三:常用类与集合题号题目选项A选项B选项C选项D答案15String类中用于获取字符串长度的方法是size()length()getSize()count()B16ArrayList类的底层数据结构是链表数组哈希表树B17不允许元素重复的集合是ListSetMapQueueB18HashMap中存储的是单值键值对有序列表字符B19将字符串"123"转换为整数的方法是Integer.valueOf()Integer.parseInt()int.parse()String.toInt()B模块四:异常与IO题号题目选项A选项B选项C选项D答案20以下哪个是运行时异常IOExceptionSQLExceptionNullPointerExceptionFileNotFoundExceptionC21try-catch-finally语句中,finally块的作用是异常发生时执行无论是否异常都执行不执行异常不发生时执行B22读取文本文件使用哪个类较合适FileInputStreamBufferedReaderDataInputStreamObjectInputStreamB23抛出一个异常的关键字是throwsthrowtrycatchB24Java中所有异常类的根是ThrowableExceptionErrorRuntimeExceptionA模块五:多线程题号题目选项A选项B选项C选项D答案25创建线程可以通过继承哪个类RunnableThreadThreadableRunB26线程启动的方法是run()start()begin()go()B27synchronized关键字的作用是保证可见性实现线程同步提高优先级让线程休眠B模块六:综合题号题目选项A选项B选项C选项D答案28下面代码输出结果:System.out.println(10+20+"30");30301020303060A("3030",注意10+20先算加法得30再连接字符串)29Java中包的关键字是packagepackimportincludeA30静态成员属于对象类方法局部变量B第十部分:程序阅读题示例例题1(多态):classAnimal{

publicvoidsound(){System.out.print("Animal");}

}

classDogextendsAnimal{

publicvoidsound(){System.out.print("Dog");}

}

publicclassTest{

publicstaticvoidmain(String[]args){

Animala=newDog();

a.sound();

}

}输出:Dog例题2(抽象类与接口):interfaceA{voidshow();}

abstractclassBimplementsA{}

classCextendsB{

publicvoidshow(){System.out.print("C");}

}

publicclassTest{

publicstaticvoidmain(String[]args){

Aobj=newC();

obj.show();

}

}输出:C例题3(字符串):Strings1="hello";

Strings2=newString("hello");

System.out.println(s1==s2);

System.out.println(s1.equals(s2));输出:false然后true例题4(异常):publicclassTest{

publicstaticvoidmain(String[]args){

try{

inta=10/0;

System.out.print("A");

}catch(Exceptione){

System.out.print("B");

}finally{

System.out.print("C");

}

}

}输出:BC例题5(集合):List<String>list=newArrayList<>();

list.add("A");list.add("B");list.add("C");

for(Strings:list)System.out.print(s);输出:ABC第十一部分:程序填空题示例例题1:实现学生类并输出信息publicclassStudent{

privateStringname;

privateintage;

publicStudent(Stringname,intage){

=name;

____①____=age;

}

publicString____②____(){returnname;}

publicintgetAge(){returnage;}

}答案:①this.age②getName例题2:使用接口计算面积interfaceShape{

____①____doublearea();//抽象方法

}

classCircleimplementsShape{

doubleradius;

Circle(doubler){radius=r;}

publicdoublearea(){

returnMath.PI*radius*radius;

}

}答案:①publicabstract或省略(接口方法默认publicabstract)例题3:异常处理publicintdivide(inta,intb){

intresult=0;

____①____{

result=a/b;

}catch(ArithmeticExceptione){

System.out.println("除数不能为零");

}

returnresult;

}答案:①try例题4:读取文件内容try(____①____br=newBufferedReader(newFileReader("data.txt"))){

Stringline;

while((line=br.readLine())!=null){

System.out.println(line);

}

}catch(IOExceptione){e.printStackTrace();}答案:①BufferedReader第十二部分:编程题示例例题1:设计一个矩形类,包含长宽和计算面积周长方法publicclassRectangle{

privatedoublelength;

privatedoublewidth;

publicRectangle(doublelength,doublewidth){

this.length=length;

this.width=width;

}

publicdoublearea(){returnlength*width;}

publicdoubleperimeter(){return2*(length+width);}

publicstaticvoidmain(String[]args){

Rectanglerect=newRectangle(5,3);

System.out.println("面积:"+rect.area());

System.out.println("周长:"+rect.perimeter());

}

}例题2:继承多态——动物叫声abstractclassAnimal{

abstractvoidspeak();

}

classDogextendsAnimal{

voidspeak(){System.out.println("汪汪");}

}

classCatextendsAnimal{

voidspeak(){System.out.println("喵喵");}

}

publicclassTestPolymorphism{

publicstaticvoidmain(String[]args){

Animal[]animals={newDog(),newCat()};

for(Animala:animals){

a.speak();

}

}

}例题3:ArrayList存储学生对象并遍历importjava.util.ArrayList;

classStudent{

Stringname;

intscore;

Student(Stringname,intscore){=name;this.score=score;}

}

publicclassStudentManager{

publicstaticvoidmain(String[]args){

ArrayList<Student>list=newArrayList<>();

list.add(newStudent("张三",85));

list.add(newStudent("李四",92));

for(Students:list){

System.out.println(+""+s.score);

}

}

}第十三部分:考前速记纸════════════

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论