2025年全国计算机等级考试二级Java真题试卷_第1页
2025年全国计算机等级考试二级Java真题试卷_第2页
2025年全国计算机等级考试二级Java真题试卷_第3页
2025年全国计算机等级考试二级Java真题试卷_第4页
2025年全国计算机等级考试二级Java真题试卷_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2025年全国计算机等级考试二级Java真题试卷一、单项选择题(本大题共10小题,每小题2分,共20分。在每小题列出的四个选项中,只有一个是符合题目要求的,请将正确选项的字母填在题后的括号内。)1.在Java中,以下哪个关键字用于声明一个类是抽象的?()A.finalB.staticC.abstractD.public解析:Java中用abstract关键字声明抽象类,抽象类不能被实例化,通常包含抽象方法(没有实现体的方法)。final用于声明常量或不可修改的类/变量;static用于声明静态成员;public是访问修饰符。抽象类是Java面向对象编程中实现多态的重要机制,常用于定义接口或基类,为子类提供共同的方法声明。在Java集合框架中,如List接口就是抽象接口,其实现类ArrayList提供了具体实现。2.以下哪个选项正确描述了Java中的继承关系?()A.一个类只能有一个直接父类B.一个类可以有多个直接父类C.一个类可以继承多个接口D.接口可以继承类解析:Java采用单继承机制,即一个类只能有一个直接父类(选项A正确),但可以通过实现多个接口实现多重继承。接口不能继承类,但可以继承其他接口。单继承简化了继承关系的管理,避免了菱形继承问题(钻石问题),但限制了代码复用性。例如,在JavaI/O流中,FilterInputStream继承自InputStream,实现了对基本输入流的过滤扩展。3.在Java中,以下哪个方法用于释放对象占用的资源?()A.finalize()B.dispose()C.close()D.destroy()解析:Java中通过finalize()方法实现对象资源释放,该方法在对象被垃圾回收前调用。虽然Java9后推荐使用try-with-resources自动关闭资源,但finalize()仍是GC前资源清理的机制。dispose()和close()常用于特定资源(如Swing组件、数据库连接)的显式释放,但不是通用方法。destroy()不是Java标准方法。在NIO中,Channel需要调用close()方法释放文件描述符。4.关于Java异常处理,以下哪个说法是正确的?()A.try块可以单独使用,不需要catch块B.finally块必须与try块配对使用C.throw和throws关键字可以互换使用D.unchecked异常必须显式捕获或声明抛出解析:try块必须与catch或finally配对使用(选项A错误);finally块可以与try配对,也可以单独与catch配对(选项B错误);throw用于抛出具体异常对象,throws用于声明方法可能抛出的异常类型,不能互换(选项C错误)。unchecked异常(运行时异常)如NullPointerException必须被处理(捕获或声明抛出),否则会导致编译错误。在Spring框架中,运行时异常通常用于表示业务逻辑错误。5.在Java集合框架中,以下哪个类实现了Set接口,且元素有序?()A.HashSetB.TreeSetC.LinkedHashSetD.ArrayList解析:Set接口的特点是元素唯一,无序。HashSet基于HashMap实现,无序且效率高;TreeSet基于红黑树实现,有序但效率较低;LinkedHashSet结合了HashSet和LinkedList,保持插入顺序。ArrayList实现List接口,元素有序可重复。在并发场景中,应使用ConcurrentHashMap来支持线程安全的Set操作。6.关于Java中的泛型,以下哪个说法是正确的?()A.泛型可以用于基本数据类型B.泛型在编译后会被擦除C.泛型方法必须声明在泛型类中D.泛型可以限制为特定类型解析:泛型不支持基本数据类型,必须使用其包装类(如Integer代替int)(选项A错误);泛型采用类型擦除机制,编译后不保留泛型信息(选项B正确);泛型方法可以定义在非泛型类中(选项C错误);泛型可以通过extends关键字限制类型范围,如List<?extendsNumber>(选项D部分正确,但表述不完整)。在Java8中,StreamAPI大量使用泛型实现通用数据处理。7.在JavaI/O中,以下哪个类用于读取文本文件?()A.DataInputStreamB.ObjectInputStreamC.BufferedReaderD.FileInputStream解析:BufferedReader用于高效读取文本文件,支持按行读取(readLine());DataInputStream用于读取基本数据类型;ObjectInputStream用于反序列化对象;FileInputStream用于读取文件字节流。在处理大文本文件时,BufferedReader配合FileReader效率更高,因为它有缓冲机制。在日志处理中,常使用BufferedReader读取日志文件。8.关于Java中的反射机制,以下哪个说法是正确的?()A.反射只能读取类信息,不能修改B.反射会降低程序性能C.反射需要类的.class对象或字符串名称D.反射不能用于动态代理解析:反射可以动态创建对象、调用方法、访问字段,不仅能读取还能修改(选项A错误);反射确实会带来性能开销,因为它在运行时分析类信息(选项B正确);反射需要通过类的.class对象或全限定名获取Class实例(选项C正确);反射可以用于动态代理,如SpringAOP的实现(选项D错误)。在框架开发中,反射常用于依赖注入。9.在Java网络编程中,以下哪个类用于创建服务器端Socket?()A.SocketB.ServerSocketC.DatagramSocketD.URLConnection解析:ServerSocket用于监听客户端连接请求,创建服务器端Socket;Socket用于客户端连接服务器;DatagramSocket用于UDP协议的传输;URLConnection用于访问网络资源。在实现Socket通信时,服务器端必须使用ServerSocket,客户端使用Socket。在HTTPS协议中,服务器端使用SSLServerSocket进行加密通信。10.关于Java中的Lambda表达式,以下哪个说法是正确的?()A.Lambda表达式必须声明返回类型B.Lambda表达式可以访问外部变量C.Lambda表达式只能用于接口有且仅有一个抽象方法的情况D.Lambda表达式会创建新的类解析:Lambda表达式类型推断时,如果参数或返回类型明显,可以省略(选项A错误);Lambda表达式可以捕获外部final或effectivelyfinal变量(选项B正确);Lambda表达式用于函数式接口(接口有且仅有一个抽象方法),但也可以用于有多个抽象方法但其他方法已实现的情况(如StreamAPI的Comparator);Lambda表达式不会创建新类,只是匿名实现(选项D错误)。在Java8中,Lambda表达式简化了函数式编程。二、填空题(本大题共10小题,每小题2分,共20分。请将答案填写在答题卡相应位置。)1.在Java中,用于声明类成员变量为常量的关键字是________。解析:final关键字用于声明常量,修饰的变量只能赋值一次。例如:publicstaticfinalintMAX_SIZE=100;在枚举类中,所有成员默认都是final的。2.Java中的异常分为两大类:检查型异常(checkedexception)和非检查型异常(uncheckedexception),其中非检查型异常包括________和________。解析:非检查型异常包括运行时异常(RuntimeException)和错误(Error)。运行时异常如NullPointerException、ArrayIndexOutOfBoundsException;错误如OutOfMemoryError。检查型异常需要显式处理或声明抛出,如IOException。3.在Java集合框架中,用于实现快速查找的集合类是________,它基于________结构实现。解析:HashSet基于HashMap实现,通过哈希值直接定位元素,时间复杂度为O(1);TreeSet基于红黑树实现,元素按自然顺序或Comparator排序。在需要快速去重且无序的场景下,常用HashSet。4.Java中的异常处理结构包括________、________和________。解析:完整的异常处理结构包括try块(尝试执行代码)、catch块(捕获并处理异常)、finally块(无论是否异常都会执行清理代码)。try-with-resources语句是Java7引入的简化版异常处理。5.在Java中,用于声明抽象类的关键字是________,用于声明抽象方法的修饰符是________。解析:abstract关键字声明抽象类,抽象类可以包含抽象方法(无实现体);abstract修饰符声明抽象方法,子类必须实现。例如:publicabstractclassShape{publicabstractvoiddraw();}6.Java中的泛型采用________机制,在编译后不保留泛型信息。解析:类型擦除(TypeErasure)机制。编译器将泛型参数替换为上界类型(或Object,如果没有上界),例如List<String>被处理为List。这避免了运行时泛型开销,但可能导致ClassCastException。7.在JavaI/O中,用于按字符高效读取的类是________,它通常与________配合使用。解析:BufferedReader用于按字符高效读取,支持缓冲和按行读取(readLine());通常与FileReader或InputStreamReader配合使用。在处理大文本文件时,BufferedReader显著提高效率。8.Java中的反射机制可以通过________对象或类的________名称获取类信息。解析:通过类的.class对象或类的全限定名(如"java.util.ArrayList")获取Class实例。反射API如Class.forName()使用字符串名称加载类。9.在Java网络编程中,用于监听客户端连接的服务器端Socket类是________,客户端连接服务器使用________类。解析:ServerSocket用于创建服务器端Socket并监听端口;Socket用于客户端发起连接请求。在实现TCP通信时,服务器端使用ServerSocket.accept()接收连接。10.Java8引入的________表达式简化了函数式接口的实现,它允许省略参数类型和返回类型。解析:Lambda表达式。例如:Comparator<Integer>comp=(a,b)->pareTo(b);比匿名内部类更简洁。Lambda表达式是函数式编程的重要特性。三、判断题(本大题共10小题,每小题2分,共20分。请判断下列叙述的正误,正确的填“√”,错误的填“×”。)1.在Java中,接口可以继承类。(×)解析:Java不支持接口继承类,但接口可以继承其他接口。这是与C++等语言的不同之处。例如,Comparable接口可以继承Cloneable接口。2.Java中的抽象类可以包含非抽象方法。(√)解析:抽象类可以包含抽象方法和非抽象(具体)方法。非抽象方法提供默认实现,子类可以选择重写。例如:publicabstractclassAnimal{publicvoideat(){System.out.println("Eating");}}3.final变量必须在声明时初始化。(√)解析:final变量必须被初始化,可以是声明时直接赋值,也可以在构造器中赋值。final变量一旦赋值不可改变。4.Java中的List集合允许元素重复,Set集合不允许元素重复且无序。(√)解析:List(如ArrayList)允许重复元素,有序;Set(如HashSet)不允许重复元素,通常无序(除非是TreeSet)。这是它们的基本特性。5.try-with-resources语句可以自动关闭实现了AutoCloseable接口的资源。(√)解析:Java7引入的try-with-resources语句自动关闭实现了AutoCloseable接口的资源,简化了资源管理。例如:try(BufferedReaderbr=newBufferedReader(newFileReader("file.txt"))){...}6.Java中的反射可以动态创建对象、访问和修改私有成员。(√)解析:通过Class.newInstance()或Constructor.newInstance()动态创建对象;通过Field.setAccessible(true)访问私有成员。反射提供了强大的动态能力,但会降低性能。7.Java中的Socket通信是面向连接的,而UDP通信是无连接的。(√)解析:Socket基于TCP协议,是面向连接的流式协议;DatagramSocket基于UDP协议,是无连接的、数据报协议。TCP提供可靠传输,UDP传输快但不可靠。8.Lambda表达式可以捕获外部变量,但必须声明为final。(×)解析:Lambda表达式可以捕获外部final或effectivelyfinal(编译时视为final)的变量,不需要显式声明为final。例如:Runnabler=()->System.out.println(i);只要i在Lambda作用域外不可变。9.Java中的HashMap和Hashtable都是线程不安全的。(√)解析:HashMap和Hashtable都未提供线程安全支持,多线程使用时需要外部同步。Java8的HashMap性能优化后更适合单线程,但仍是不可变的。线程安全版本是ConcurrentHashMap。10.Java中的泛型可以限制集合中元素的类型,例如List<?extendsNumber>只能存储Number及其子类型。(√)解析:List<?extendsNumber>是上界通配符,表示该List只能添加Number或其子类型(Integer、Double等),但无法添加其他类型。这是类型安全的泛型实现方式。四、简答题(本大题共8小题,每小题2分,共16分。请简要回答下列问题。)1.简述Java中的封装性及其实现方式。解析:封装性是面向对象的基本特性之一,指将数据(属性)和操作数据的方法绑定在一起,并隐藏内部实现细节,只暴露必要的接口。实现方式:使用访问修饰符(private、protected、public)控制成员可见性;通过getter/setter方法提供对私有属性的访问。例如:publicclassBankAccount{privatedoublebalance;publicdoublegetBalance(){returnbalance;}publicvoiddeposit(doubleamount){balance+=amount;}}2.解释Java中的继承和多态的概念。解析:继承:子类继承父类的属性和方法,实现代码复用和扩展。子类可以重写父类方法(覆盖),也可以使用super关键字调用父类方法。多态:指父类引用可以指向子类对象,并调用子类重写的方法。例如:Animala=newDog();a.bark();实际调用Dog类的bark()方法。多态分为编译时多态(方法重载)和运行时多态(方法覆盖)。3.Java中的异常处理机制有哪些优点?解析:异常处理优点:1)分离错误处理代码与业务逻辑代码,提高代码可读性;2)统一错误处理方式,便于维护;3)允许程序在异常发生时恢复,提高健壮性;4)提供详细的错误信息,便于调试。例如:try{...}catch(IOExceptione){log.error("IOerror",e);}finally{closeResource();}4.简述Java集合框架的主要接口及其特点。解析:主要接口:List(有序可重复,如ArrayList)、Set(无序唯一,如HashSet)、Map(键值对唯一,如HashMap)。特点:List按索引访问;Set不允许重复;Map通过键查找值。扩展接口:Queue(队列)、SortedSet(有序Set)、NavigableSet(可导航Set)、SortedMap(有序Map)等。例如:ArrayList是动态数组实现List,HashSet基于HashMap实现。5.Java中的抽象类和接口有什么区别?解析:抽象类:可以包含抽象方法(无实现体)和具体方法;可以包含成员变量;可以声明构造器;只能被继承(单继承);实例化需要子类实现所有抽象方法。接口:只能包含抽象方法(Java8后可包含默认/静态方法)和常量;没有成员变量;不能声明构造器;可以被实现(多实现);所有方法默认publicabstract。例如:publicabstractclassShape{publicabstractvoiddraw();}vspublicinterfaceDrawable{voiddraw();}6.解释Java中的反射机制及其应用场景。解析:反射:在运行时分析类的能力,可以动态创建对象、访问/修改字段、调用方法。应用场景:1)框架开发(如Spring依赖注入);2)动态代理;3)序列化/反序列化;4)代码分析工具。例如:通过Class.forName("java.sql.Connection")获取Connection类。反射会带来性能开销,应谨慎使用。7.Java中的I/O流分为哪几类?主要用途是什么?解析:分类:字节流(InputStream/OutputStream,处理字节)、字符流(Reader/Writer,处理字符)、对象流(ObjectInputStream/ObjectOutputStream,处理对象)、文件流(FileInputStream/FileOutputStream)、缓冲流(BufferedInputStream/BufferedReader等)、转换流(InputStreamReader/OutputStreamWriter)、数据流(DataInputStream/DataOutputStream,处理基本数据类型)。用途:文件读写、网络通信、对象序列化等。例如:BufferedReaderbr=newBufferedReader(newFileReader("file.txt"));用于按行读取文本文件。8.Java中的泛型有什么作用和限制?解析:作用:1)编译时类型检查,避免ClassCastException;2)代码复用,无需强制转型。限制:1)不支持基本数据类型,必须用包装类;2)类型擦除,运行时无泛型信息;3)无法使用instanceof判断具体类型。例如:List<String>s=newArrayList<>();s.add("hello");s.add(123);//编译错误。泛型是Java5引入的重要特性,提高了代码安全性。五、应用题(本大题共8小题,每小题4分,共24分。请根据要求完成下列问题。)1.设计一个Java类表示矩形,包含长和宽属性,提供计算面积和周长的方法,并重写toString()方法。解析:```javapublicclassRectangle{privatedoublelength;privatedoublewidth;publicRectangle(doublelength,doublewidth){this.length=length;this.width=width;}publicdoublegetArea(){returnlengthwidth;}publicdoublegetPerimeter(){return2(length+width);}@OverridepublicStringtoString(){return"Rectangle[length="+length+",width="+width+",area="+getArea()+",perimeter="+getPerimeter()+"]";}}```解析:类包含私有属性length和width,提供构造器初始化;getArea()和getPerimeter()计算面积和周长;toString()返回矩形信息。这是面向对象封装的典型示例。2.编写Java代码实现数组去重,输入数组[1,2,2,3,4,4,5],输出[1,2,3,4,5]。解析:```javaimportjava.util.LinkedHashSet;importjava.util.Set;importjava.util.ArrayList;publicclassArrayDedup{publicstaticvoidmain(String[]args){int[]arr={1,2,2,3,4,4,5};Set<Integer>set=newLinkedHashSet<>();for(intnum:arr){set.add(num);}ArrayList<Integer>result=newArrayList<>(set);System.out.println(result);//[1,2,3,4,5]}}```解析:使用LinkedHashSet保持插入顺序去重;遍历数组添加到Set;Set自动去重;转换为List输出。这是集合框架应用的一个典型例子。3.编写Java代码实现简单的文件复制,将源文件复制到目标文件。解析:```javaimportjava.io.;publicclassFileCopy{publicstaticvoidmain(String[]args){Stringsource="source.txt";Stringtarget="target.txt";try(FileInputStreamfis=newFileInputStream(source);FileOutputStreamfos=newFileOutputStream(target)){byte[]buffer=newbyte[1024];intlen;while((len=fis.read(buffer))>0){fos.write(buffer,0,len);}}catch(IOExceptione){e.printStackTrace();}}}```解析:使用FileInputStream读取源文件,FileOutputStream写入目标文件;缓冲区提高效率;循环读取并写入。这是I/O流操作的典型应用。4.编写Java代码实现冒泡排序算法,对数组[5,2,8,7,1]进行排序。解析:```javapublicclassBubbleSort{publicstaticvoidmain(String[]args){int[]arr={5,2,8,7,1};for(inti=0;i<arr.length-1;i++){for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}System.out.println(Arrays.toString(arr));//[1,2,5,7,8]}}```解析:双层循环,外层控制趟数,内层相邻元素比较交换;每次内循环将最大元素冒泡到末尾。这是基本的排序算法实现。5.编写Java代码实现单例模式(懒汉式)。解析:```javapublicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}```解析:私有构造器防止外部创建;静态变量存储唯一实例;getInstance()方法双重检查锁定。这是设计模式中创建型模式的典型实现。6.编写Java代码实现线程通信,使用wait()和notify()方法。解析:```javapublicclassThreadCommunication{privatefinalObjectlock=newObject();privatebooleanflag=false;publicvoidproducer()throwsInterruptedException{synchronized(lock){while(!flag){System.out.println("Producerwaiting...");lock.wait();}System.out.println("Produceditem");flag=false;lock.notify();}}publicvoidconsumer()throwsInterruptedException{synchronized(lock){while(flag){System.out.println("Consumerwaiting...");lock.wait();}System.out.println("Consumeditem");flag=true;lock.notify();}}}```解析:使用锁对象lock;wait()释放锁并等待通知;notify()唤醒一个等待线程。这是线程同步的经典例子。7.编写Java代码实现简单的命令行计算器,支持加、减、乘、除运算。解析:```javapublicclassSimpleCalculator{publicstaticvoidmain(String[]args){if(args.length!=3){System.out.println("Usage:javaSimpleCalculator<operator><num1><num2>");return;}Stringoperator=args[0];doublenum1=Double.parseDouble(args[1]);doublenum2=Double.parseDouble(args[2]);doubleresult;switch(operator){case"+":result=num1+num2;break;case"-":result=num1-num2;break;case"":result=num1num2;break;case"/":if(num2==0){System.out.println("Error:Divisionbyzero");return;}result=num1/num2;break;default:System.out.println("Error:Invalidoperator");return;}System.out.println("Result:"+result);}}```解析:解析命令行参数;根据运算符执行计算;处理除零和无效运算符。这是简单的命令行工具实现。8.编写Java代码实现线程池的基本使用(使用Executors)。解析:```javaimportjava.util.concurrent.;publicclassThreadPoolExample{publicstaticvoidmain(String[]args){ExecutorServicepool=Executors.newFixedThreadPool(3);pool.submit(()->System.out.println("Task1:"+Thread.currentThread().getName()));pool.submit(()->System.out.println("Task2:"+Thread.currentThread().getName()));pool.submit(()->System.out.println("Task3:"+Thread.currentThread().getName()));pool.shutdown();try{if(!pool.awaitTermination(1,TimeUnit.SECONDS)){pool.shutdownNow();}}catch(InterruptedExceptione){pool.shutdownNow();}}}```解析:创建固定大小为3的线程池;提交任务;shutdown()停止接收新任务;awaitTermination()等待任务完成。这是并发编程的典型应用。【标准答案及解析】一、单项选择题1.C2.A3.A4.D5.C6.B7.C8.B9.B10.B解析:1.abstract关键字用于声明抽象类;2.Java单继承;3.finalize()用于资源释放;4.unchecked异常必须处理;5.LinkedHashSet保持插入顺序;6.泛型编译时擦除;7.BufferedReader高效读取文本;8.反射通过.class获取;9.ServerSocket用于服务器端;10.Lambda表达式简化函数式接口。二、填空题1.final2.运行时异常错误3.HashSet哈希表4.trycatchfinally5.abstractabstract6.类型擦除7.BufferedReaderFileReader8..class字符串9.ServerSocketSocket10.Lambda三、判断题1.×2.√3.√4.√5.√6.√7.√8.×9.√10.√解析:1.接口不能继承类;2.抽象类可以包含非抽象方法;3.final变量必须初始化;4.List允许重复,Set不允许;5.try-with-resources自动关闭AutoCloseable;6.反射可以访问私有成员;7.TCP面向连接,UDP无连接;8.Lambda捕获final或effectivelyfinal变量;9.HashMap和Hashtable线程不安全;10.上界通配符限制类型。四、简答题1.封装性:将数据(属性)和操作数据的方法绑定在一起,隐藏内部实现细节,只暴露必要接口。实现方式:使用private、protected、public修饰符控制可见性;通过getter/setter方法提供对私有属性的访问。例如:publicclassBankAccount{privatedoublebalance;publicdoublegetBalance(){returnbalance;}}2.继承:子类继承父类,实现代码复用和扩展。子类可以重写父类方法。多态:父类引用指向子类对象,调用子类重写的方法。例如:Animala=newDog();a.bark();实际调用Dog类的bark()。3.优点:分离错误处理代码与业务逻辑;统一错误处理方式;提高程序健壮性;提供详细错误信息。例如:try{...}catch(IOExceptione){log.error("IOerror",e);}finally{closeResource();}4.List(有序可重复,如ArrayList)、Set(无序唯一,如HashSet)、Map(键值对唯一,如HashMap)。特点:List按索引访问;Set不允许重复;Map通过键查找值。扩展接口:Queue、SortedSet、NavigableSet、SortedMap等。5.抽象类:可以包含抽象方法和具体方法;可以包含成员变量;可以声明构造器;只能被继承(单继承);实例化需要子类实现所有抽象方法。接口:只能包含抽象方法和常量;没有成员变量;不能声明构造器;可以被实现(多实现)。6.反射:在运行时分析类的能力,可以动态创建对象、访问/修改字段、调用方法。应用场景:框架开发(如Spring依赖注入)、动态代理、序列化/反序列化、代码分析工具。例如:通过Class.forName("java.sql.Connection")获取Connection类。7.分类:字节流(InputStream/OutputStream)、字符流(Reader/Writer)、对象流(ObjectInputStream/ObjectOutputStream)、文件流(FileInputStream/FileOutputStream)、缓冲流(BufferedInputStream/BufferedReader)、转换流(InputStreamReader/OutputStreamWriter)、数据流(DataInputStream/DataOutputStream)。用途:文件读写、网络通信、对象序列化等。例如:BufferedReaderbr=newBufferedReader(newFileReader("file.txt"));用于按行读取文本文件。8.作用:编译时类型检查,避免ClassCastException;代码复用,无需强制转型。限制:不支持基本数据类型,必须用包装类;类型擦除,运行时无泛型信息;无法使用instanceof判断具体类型。例如:List<String>s=newArrayList<>();s.add("hello");s.add(123);//编译错误。五、应用题1.```javapublicclassRectangle{privatedoublelength;privatedoublewidth;publicRectangle(doublelength,doublewidth){this.length=length;this.width=width;}publicdoublegetArea(){returnlengthwidth;}publicdoublegetPerimeter(){return2(length+width);}@OverridepublicStringtoString(){return"Rectangle[length="+length+",width="+width+",area="+getArea()+",perimeter="+getPerimeter()+"]";}}```解析:类包含私有属性length和width,提供构造器初始化;getArea()和getPerimeter()计算面积和周长;toString()返回矩形信息。这是面向对象封装的典型示例。2.```javaimportjava.util.LinkedHashSet;importjava.util.Set;importjava.util.ArrayList;publicclassArrayDedup{publicstaticvoidmain(String[]args){int[]arr={1,2,2,3,4,4,5};Set<Integer>set=newLinkedHashSet<>();for(intnum:arr){set.add(num);}ArrayList<Integer>result=newArrayList<>(set);System.out.println(result);//[1,2,3,4,5]}}```解析:使用LinkedHashSet保持插入顺序去重;遍历数组添加到Set;Set自动去重;转换为List输出。这是集合框架应用的一个典型例子。3.```javaimportjava.io.;publicclassFileCopy{publicstaticvoidmain(String[]args){Stringsource="source.txt";Stringtarget="target.txt";try(FileInputStreamfis=newFileInputStream(source);FileOutputStreamfos=newFileOutputStream(target)){byte[]buffer=newbyte[1024];intlen;while((len=fis.read(buffer))>0){fos.write(buffer,0,len);}}catch(IOExceptione){e.printStackTrace();}}}```解析:使用FileInputStream读取源文件,FileOutputStream写入目标文件;缓冲区提高效率;循环读取并写入。这是I/O流操作的典型应用。4.```javapublicclassBubbleSort{publicstaticvoidmain(String[]args){int[]arr={5,2,8,7,1};for(inti=0;i<arr.length-1;i++){for(intj=0;j<arr.length-1-i;j++){if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}System.out.println(Arrays.toString(arr));//[1,2,5,7,8]}}```解析:双层循环,外层控制趟数,内层相邻元素比较交换;每次内循环将最大元素冒泡到末尾。这是基本的排序算法实现。5.```javapublicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}```解析:私有构造器防止外部创建;静态变量存储唯一实例;getInstance()方法双重检查锁定。这是设计模式中创建型模式的典型实现。6.```javapublicclassThreadCommunication{privatefinalObjectlock=newObject();privatebooleanf

温馨提示

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

评论

0/150

提交评论