JavaSE期末总测试题.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaSE 期末 测试
- 资源描述:
-
JavaSE期末总测试 注意: 直接将自己的答案编写在每一道试题的下面,代码要规范,最好使用不同背景加注, 提交试卷的时候文件的命名格式如:”姓名.doc” 一、简答题 1. 简述面向对象的特征有哪些方面? 三大特征:封装、继承、多态 1、 封装:在开发中,实体类我们一般都会封装起来,隐藏对象的属性和实现细节,仅对外提供公共访问方式。 1) 私有化属性 2) 根据需求设置set、get方法 3) 提供公共方法对其访问 2、 继承: 1) 父类的由来:多个类不断向上抽取共性内容而来的 2) 只支持单继承,但支持多重继承,即A继承B,B继承C,C继承D 3) 为什么不支持多继承,当两个父类中有相同的功能时,子类方法调用该功能时该运行哪一个呢? 4) 当类与类之间存在着所属关系时,才具备了继承的前提 5) 子类覆盖父类时,必须要保证子类方法的权限大于等于父类方法的权限 6) 覆盖时,要么都静态,要么都不静态 3、 多态: 1) 体现:父类的引用或者接口的引用指向了自己的子类对象,即父类可以调用子类中复写过的方法。// Animal a = new Cat(); 2) 前提:必须要有关系,如继承、实现;通常会有覆盖操作 3) 弊端:当父类引用指向子类对象时,只能访问父类中含有的方法 2. 简述StringBuffer和StringBuilder的区别?(10分) StringBuffer:字符串缓冲区,从JDK1.0开始的,是一个线程安全的存储字符容器。如果频繁修改字符串的内容,建议使用字符串缓冲类StringBuffer。 StringBuilder:字符串缓冲区,从JDK1.5开始的,非线程安全,但效率高。 单线程操作,使用StringBuilder效率高;多线程操作,使用StringBuffer安全。 3. 在main方法中的执行代码如下: String s1 = "abc"; String s2 = "abc"; System.out.println(s1 == s2); 请写出以上代码的输出的结果,分析输出结果的原因。(10分) 打印:true String对象可以直接使用字面量赋值,而且多个String对象指向同一个字面量时,在堆内存当中只有一个java对象。如果调用String构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个string对象。所以,如果s1、s2都是同一个字面量赋值,那么无论是用==还是equals(),都返回true。如果s1、s2使用String构造函数生成对象,并且传入的字面量相等,那么用==返回false,用equals()返回true。 4.多线程有几种实现方法?同步有几种实现方法? (10分) 两大方法:extend Thread类、implements Runnable接口 1、继承Thread类,由子类腹泻run()方法 1) 自定义子类继承Thread类 2) 将让线程运行的代码存储到run()方法中 3) 通过创建Thread的子类对象,创建线程对象 4) 通过子类调用start()方法,开启线程 2、实现Runnable接口 1)自定义类实现Runnable接口 2)将让线程运行的代码存储到run()方法中 3)创建Thread类线程对象 4)创建自定义类对象,将自定义类对象作为实际参数传递给Thread类的构造函数(为了让线程对象明确要运行的run方法所属的对象) 5)调用Thread对象的start方法开启线程,并运行Runnable接口中的run方法 synchronized,wait 与notify 都可以实现同步 5. 列出Java你所知道的集合体系,并简述各自的特点.(10分) 集合:用于存储数据的容器 特点:集合用于存储对象;集合是可变长度的 集合与数组的区别: 1) 数组是固定长度的,集合是可变长度的 2) 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型 3) 数组存储的元素是同一个类型的元素;集合存储的对象可以是不同数据类型的对象 单列集合:Collection,根接口 List:有序,元素有索引,元素可以重复 Set:无序,不可以存储重复元素,必须保证元素的唯一性 ArrayList:底层的数据结构是数组,线程不同步,非线程安全,查询速度快,增删慢; LinkedList:底层的数据结构是链表,线程不同步,非线程安全,查询速度慢,增删快; Vector:底层的数据结构是数组,线程同步,线程安全,查询、增删都非常慢 HashSet:底层是哈希表,线程不同步,非线程安全,无序、高效 LinkedHashSet:有序,HashSet的子类 TreeSet:底层的数据结构是二叉树,线程不同步,非线程安全,对Set集合中的元素排序 双列集合:Map,根接口 HashTable:底层是哈希表数据结构,线程同步,不可以存储null键、null值 HashMap:底层是哈希表数据结构,线程不同步,可以存null键、null值,替代了HashTable TreeMap:底层是二叉树结构,可以对map集合中的键值进行指定顺序的排序 6.集合与数组的区别是什么呢?(10分) 1)集合是可变长度的,数组是固定长度的 2)集合只能存储对象的引用,数组既可以存储对象的引用又可以存储基本数据类型 3)集合可以存储不同数据类型的元素,数组只能存储相同数据类型的元素 7.Collection和Collections的区别?(10分) Collection是java.util下的接口,是各种集合结构的父接口,继承于它的接口主要有Set、List,提供了一些关于集合的一些操作,如插入、删除、判断一个元素是否为其成员、遍历等操作。 Collections是java.util下的类,是集合的帮助类,提供一些静态方法,实现对集合的查找、排序、替换、线程安全化等操作。 8.HashSet是如何保证元素唯一性的。(10分) HashSet底层数据结构是哈希表,不存入重复元素,线程不同步,无序、高效。 HashSet集合保证元素的唯一性,是通过元素的hashCode方法和equals方法完成的。当元素的hashCode值相同时,才判断元素的equals是否为true,如果为true,则视为相同元素,不存储;如果为false,则存储。如果hashCode值不同,则不判断equals,从而提高对象的比较速度。 9.简述ArrayList与Vector的区别,ArrayList与LinkedList的区别(10分) ArrayList与Vector底层数据结构都是Object数组,ArrayList非线程安全;Vector线程安全,但查询、增删都非常慢。 ArrayList:底层数据结构是Object数组,线程不同步,非线程安全,查询快,增删慢 LinkedList:底层数据结构是链表,线程不同步,非线程安全,查询慢,增删快 如果我们需要保留存储顺序,并且保留重复元素的时候,使用List;如果查询比较多,则使用ArrayList;如果存取比较多,则使用LinkedList;如果要线程安全,则使用Vector。 二、 编程题(写出代码思路,伪代码) 1.使用TCP,模拟一下QQ的信息交流功能,客户端,服务端(10分) package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import .ServerSocket; import .Socket; public class Test22 { /*建立 tcp 的服务器 接受客户端的连接,传声一个Socket 获取到Socket的输入流对象 获取到Socket输出流的对象 获取键盘的输入流对象 读取客户端的数据 关闭资源 */ public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8088); Socket socket =serverSocket.accept(); BufferedReader sReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); OutputStreamWriter sOut = new OutputStreamWriter(socket.getOutputStream()); BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in) ); String line = null; while((line = sReader.readLine())!=null){ System.out.println("服务端接收到的信息:"+line); System.out.println("请输入回送给客户端"); line=keyReader.readLine(); sOut.write(line+"\r\n"); sOut.flush(); } serverSocket.close(); } } 客户端类 package test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import .InetAddress; import .Socket; import .UnknownHostException; public class Test22send { public static void main(String[] args) throws IOException, IOException { //建立tcp的客户端服务 //获取socket的输出对象 //获取socket的输入流对象 //获取键盘的输入流对象,读取数据 //不断的读取键盘录入数据,然后把数据写出 //flush刷一把 //... Socket socket = new Socket(InetAddress.getLocalHost(),8088); OutputStreamWriter sOut = new OutputStreamWriter(socket.getOutputStream()); BufferedReader sReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line = keyReader.readLine())!=null ){ sOut.write(line+"\r\n"); sOut.flush(); line = sReader.readLine(); System.out.print("服务器送回的数据是:"+line); } socket.close(); } } 2. 编写一个方法实现拷贝任意文件的功能,要求效率最高。(10分) package test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Scanner; public class CopyFile { public static void main(String[] args) throws IOException { System.out.print("请输入要拷贝的文件的绝对路径"); Scanner s = new Scanner(System.in); File inFile = new File(s.next()); File outFile = new File("E:\\CopyFile.jpg"); System.out.println("拷贝成功,拷贝的路径是E:\\CopyFile.jpg"); FileInputStream fileInputStream = new FileInputStream(inFile); FileOutputStream fileOutputStream = new FileOutputStream(outFile); BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); int content = 0; while((content = bufferedInputStream.read())!=-1){ bufferedOutputStream.write(content); } bufferedInputStream.close(); bufferedOutputStream.close(); } } 三、 课外扩展题(课后的时间做)作为课后扩展题不计入总分 1. 定义一个ArrayList集合,在类加载时添加10本书,书籍具有书名、作者、价格三个属性,在main函数中通过键盘录入一个书名时,查询出该书籍的详细信息。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




JavaSE期末总测试题.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/11987905.html