Java网络程序设计课后习题答案_第1页
Java网络程序设计课后习题答案_第2页
Java网络程序设计课后习题答案_第3页
Java网络程序设计课后习题答案_第4页
Java网络程序设计课后习题答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

第一章初识Java【选择题】1.C2.A【简答题】3.JVM、JDK和JRE之间的区别:JVM:JavaVirtualMachine,就是Java虚拟机。它只认识xxx.class这种类型的文件,它能够将class文件中的字节码指令进行识别并调用操作系统向上的API完成动作。所以说,JVM是Java能够跨平台的核心。JRE:JavaRuntimeEnvironment,Java运行时环境。它主要包含两个部分,JVM的标准实现和Java的一些基本类库。JDK:JavaDevelopmentKit,Java开发工具包。JDK是整个Java开发的核心,它集成了JRE和一些好用的小工具。例如:javac.exe,java.exe,jar.exe等。JVM、JDK和JRE之间的关系是:JDK>JRE>JVM。4.Java的注释有3种:单行注释、多行注释、文档注释。//注释一行/*......*/注释若干行/**......*/注释若干行,并写入javadoc文档

第二章Java基础语法应用【选择题】1.C【填空题】2.float;double【简答题】3.Java的基本数据类型有:数值型(整数类型(byte、short、int、long)、浮点类型(float、double))字符型(char)布尔型(boolean)4.Java的字符型变量可以存一个汉字,因为Java使用Unicode编码,一个Unicode编码占2个字节,一个汉字也是占2个字节,所以Java中字符型变量可以存放一个汉字。5.final、finally和finalize的区别如下:final:用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量。finally:用于处理异常情况,用来声明一个基本肯定会被执行的语句块。finalize是基础类java.lang.Object的一个方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收

第三章控制结构、方法与数组应用【选择题】A、C2.C【简答题】3.基本数据类型在内存中存的是数据本身,引用数据类型的名称实际代表的是存放引用数据类型的地址,不是引用数据类型本身。Java语言中,数组是引用数据类型,类以及后面要学到的接口也是引用数据类型,前面用到的存放字符串的String类型就是引用数据类型。4.程序编译通过,运行的结果如下:11539然后会保数组越界异常5.参考程序如下:staticvoidbubbleSort(int[]a){//引用传递 inttemp; //数组的长度可以通过“数组名.length”获得//需要比较n-1轮 for(inti=0;i<a.length-1;i++){//根据a.length-i-1,每轮需要比较的次数逐轮减少1次 for(intj=0;j<a.length-i-1;j++){//相邻数进行比较,符合条件进行替换 if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } }

第四章类与对象应用【选择题】1.B【填空题】2.public3.类被加载时,出现4.public、static、final5.150【简答题】6.(1)面向对象的特性:封装、继承、多态(2)封装就是将对象的状态和信息隐藏在内部不允许外部直接访问对象内部的信息,需要通过该类提供的方法来实现对其中内部信息的访问7.构造方法的特点:(1)构造方法的方法名必须与类名相同;(2)构造方法没有返回类型,也不能定义为void,在方法名前不声明返回类型;8.4种访问权限修饰符的区别:①private(当前类访问级别):如果类的成员被private访问控制符来修饰,则这个成员只能被该类的其他成员访问,其他类无法访问。类的良好封装就是通过private关键字来实现的。②default(包访问级别):如果一个类或类的成员不使用任何访问控制修饰符,则称他为默认访问控制级别,这个类或者类的成员只能被包中的其他类访问。③protected(子类访问级别):如果一个类的成员被protected访问控制符修饰,那么这个既能被同一包下的其他类访问,也能被不同包下该类的子类访问。④public(公共访问级别):这是一个最宽松的访问级别,如果一个类或者类的成员被public访问控制符修饰,那么这个类或者类的成员能被所有的类访问,不管访问类与被访问类是否在同一个包中9.String类不能被继承,因为String类由final修饰符,而final修饰的类是不能被继承的。10.重载和重写的区别:重载:发生在同一个类中,且要求重载方法的方法名相同,参数的数据类型或者参数个数不同。重写:发生在继承关系中,子类中重写父类的方法,且要求重写方法的方法名相同,参数相同,返回值相同。11.抽象类和接口的区别:抽象类有构造方法,接口没有构造方法抽象类只能单继承,接口可以多继承抽象类中可以定义普通方法、也可以定义抽象方法,接口中只能定义抽象方法抽象类可以定义各种类型的成员变量,接口中只能是publicstaticfinal修饰的静态常量12.(1)一个类直接实现多个接口,需要用implements关键字后面跟着多个接口,多个接口之间使用逗号隔开;(2)一个类实现一个扩展接口,需要接口之间使用extends关键字声明继承关系,最后用implements关键字实现该扩展接口就行了。13.多态是指程序的多种表现形式,分为动态多态和静态多态。动态多态:父类中的属性和行为被子类继承之后,可以具有不同的表现,表现形式为重写;静态多态:在同一个类中,行为名称虽然一样,但也会具有不同的表现,表现形式为重载。

第五章常用类应用【选择题】1.D2.B3.B【简答题】4.获取Class类的方法有:通过class的方式创建Class实例:类名.class通过对象的getClass()方法获得。通过Class类的forName()方法来获得。5.使用反射机制创建对象的方法有:Class.newInstance()创建对象调用类对象的构造方法:Class.getConstructors(),然后再通过构造方法调用newInstance()创建对象6.请简要介绍Java如何实现动态数组的功能。通过实现添加数组元素、获取数组元素、移除数组元素、代替数组元素的功能来实现动态数组(1)添加数组元素创建一个新数组,长度比原来的数组大。遍历原数组元素,将原数组中的元素存入新数组中,替换引用;(2)获取数组元素判断要获取的数组下标是否越界,若越界,报错;若没越界,直接返回要获取的数组元素;(3)移除数组元素判断要获取的数组下标是否越界,若越界,报错;若没越界,后置数据前移;(4)替换数组元素判断要获取的数组下标是否越界,若越界,报错;若没越界,替换新的数组元素7.“,Mary,F,1976”(第一个字符是‘,’)得到的结果为:4个元素的String数组,其中第一个元素为空字符串,第二个元素为Mary,第三个元素为F,第四个元素为1976“,Mary,F,1976”(第一个字符是空格,第二个字符是‘,’)得到的结果为:4个元素的String数组,其中第一个元素为一个空格的字符串,第二个元素为Mary,第三个元素为F,第四个元素为19768.String不是基本数据类型,String类不可以继承,因为String是final修饰的类9.“==”和“equals”的区别:在程序中可以通过“==”和equals()两种方式对字符串进行比较,但这两种方式有明显的区别。equals()方法用于比较两个字符串中的字符是否相等;==方法用于比较两个字符串对象的地址是否相同。10.String和StringBuffer的区别:String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer类表示字符容器,其内容和长度可以随时修改。在操作字符串时,如果该字符串仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删操作,则使用StringBuffer类。11.(1)try:用于监听。将可能抛出异常的代码放在try语句块之内,当try语句块内发生异常时,异常就被抛出。(2)catch:用于捕获异常。catch用来捕获try语句块中发生的异常。(3)finally:finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。(4)throw:用于直接抛出异常对象。(5)throws:用在方法声明中,用于声明该方法可能抛出的异常

第六章集合应用【选择题】1.A【简答题】2.Set接口和List接口的区别:Set不允许重复对象、插入和检索的顺序不一致List允许重复对象、即插入和检索的顺序是一致的3.ArrayList和LinkedList的区别:ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。4.Collection和Collections的区别:Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。Collection是个java.util下的接口,它是各种集合结构的父接口5.Comparable和Comparator的区别:comparable是本身与相同类型的其他对象做比较comparator是两个相同类型的数据在某一处做比较。6.泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

第七章文件操作应用【简答题】1.要使编写的Java程序具有跨平台性,进行文件操作时尽量使用相对路径2.(1)Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。(2)Java中的字符流处理的最基本的单元是Unicode码元(大小2字节),它通常用来处理文本数据。3.静态导入用来导入指定类的某个静态属性或方法,或全部静态属性或方法。静态导入使用importstatic语句。优点:让代码编写相对简单;缺点:没有完整地写出静态成员所属的类名,程序的可读性有所降低。4.缓冲流是一种装饰器类,目的是让原字节流、字符流新增缓冲的功能,提高输入输出的效率。

第八章线程应用【选择题】1.A【简答题】2.使用进程是为了使多个程序能并发执行,执行效率更高,可以提高资源的利用率和系统吞吐量。3.线程启动时,调用start()方法进入就绪状态,如果资源可用则进入运行状态,若资源不可用则进入阻塞状态,等待下一次调度;若执行完成则结束。4.HashMap:(1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突。(2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。Hashtable:(1)Hashtable是一个散列表,它存储的内容是键值对(key-value)映射。(2)Hashtable的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。5.(1)如果线程A等待另一个线程B的完成才能继续,而在线程B中又要等待线程A的资源,这两个线程相互等待对方释放锁时就会发生死锁。出现死锁后,不会出现异常,不会出现提示,只是相关线程都处于阻塞状态,无法继续运行。(2)当多个线程竞争多个排他性锁的时候,可能出现死锁。解决的方式为多个线程以同样的顺序获取锁,不出现交叉也就不会出现死锁的问题。6.sleep()和wait()区别:sleep()方法是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程,等到休眠时间结束后,线程进入就绪状态和其他线程一起竞争cpu的执行时间。wait()是Object类的方法,当一个线程执行到wait方法时,它就进入到一个和该对象相关的等待池,同时释放对象锁,使得其他线程能够访问,可以通过notify,notifyAll方法来唤醒等待的线程。

第九章网络编程应用【选择题】1.D【简答题】2.OSI七层网络模型TCP/IP四层概念模型应用层应用层表示层会话层传输层传输层网络层网络层数据链路层网络接口层物理层3.子网掩码是一种用来指明一个IP地址的哪些位标识的是网络号(含子网号)以及哪些位标识的是主机号的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分

温馨提示

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

评论

0/150

提交评论