java课后答案整理.docx
《java课后答案整理.docx》由会员分享,可在线阅读,更多相关《java课后答案整理.docx(15页珍藏版)》请在冰豆网上搜索。
![java课后答案整理.docx](https://file1.bdocx.com/fileroot1/2022-11/16/5e3de0f8-8dfe-4605-8328-41fa7fb38b6c/5e3de0f8-8dfe-4605-8328-41fa7fb38b6c1.gif)
java课后答案整理
2-2.Java语言的基本数据类型有哪些?
引用数据类型有哪些?
【答】基本数据类型有:
整数类型byte、short、int、long,浮点数类型float、double,字符类型char,布尔类型boolean;引用数据类型包括数组(array)、类(class)和接口(interface)
2-14.作为引用数据类型,数组变量与基本数据类型的变量使用时有哪些区别?
【答】数组变量与基本数据类型变量不同点在于,存储单元的分配方式不同,两个变量之间的赋值方式也不同。
基本数据类型变量获得存储单元的方式是静态的,声明了变量后系统就为变量分配了存储单元,就可以对变量赋值。
两个变量之间的赋值是值本身。
数组变量的引用赋值,数组变量保存的是数组的引用,即数组占用的一片连续存储空间的首地址及长度特性。
当声明一个数字变量而未申请空间时,变量是未初始化的,没有地址及特性值。
只有申请了存储空间,才能以下标表示数组元素。
3-1什么是类?
什么是对象?
他们之间的关系是怎样的?
【答】在面向对象的概念中,类是既包括数据又包括作用于数据的一组操作的封装体。
类中的数据称为成员变量,类中的数据操作称为成员方法。
类中的成员变量和成员方法统称为类的成员。
对象是类的实例。
对象与类的关系就像变量与数据类型的关系一样。
是抽象与具体,模板与实例的关系,类是抽象的、是模板,对象是具体的、是实例。
3-2作为引用数据类型,对象在赋值和方法的参数传递方面与基本数据类型的变量有什么不同?
【答】作为引用数据类型,两个对象之间的赋值是引用赋值,对象可被赋值为null。
具体可参见课本第三章图3.1的(d)。
方法声明中形式参数的数据类型,既可以是基本数据类型,也可以是引用数据类型。
如果形式参数的数据类型是基本数据类型,则实际参数向形式参数传递的是值;如果形参的数据类型是引用数据类型,则实参向形参传递的是引用。
同样,方法返回值的数据类型,既可以是基本数据类型,也可以是引用数据类型,两者分别传递值和引用。
3-5什么是封装?
为什么要将类封装起来?
封装的原则是什么?
【答】封装性是面向对象的核心特征之一,它提供一种信息隐藏技术。
类的封装包含两层含义:
一是将数据和对数据的操作组合起来构成类,类是一个不可分割的独立单位;二是类中既要提供与外部联系的方法,同时又要尽可能隐藏类的实现细节。
软件扩充和维护的需要需对类进行封装。
封装原则:
隐藏内部实现细节。
3-10Java定义了几个关键字用于表示几种访问权限?
各表示什么含义?
类有几种访问权限?
类中成员有几种访问权限?
分别使用什么关键字?
【答】Java定义了三个表示权限的关键字(public、protected、private)。
类有2种访问权限分别是:
公有public,缺省。
类中成员有4种访问权限分别是:
公有public,可被所有类访问;保护protected,可被同一包及包外所有子类访问;缺省,可被当前包中所有类访问;私有private,只能被当前类访问。
3-26什么是多态性?
什么是方法的重载?
方法的重载和覆盖有何区别?
【答】在面向对象语言中,多态是指一个方法可以有多种实现版本,类的多态性表现为方法的多态性。
重载是指同一个类中的多个方法可以同名但参数列表必须不同。
重载表现为同一个类中方法的多态性。
覆盖是指子类重定义了父类中的同名方法。
覆盖表现为父类与子类之间方法的多态性。
3-27什么是运行时多态?
方法的重载和覆盖分别是什么时的多态性?
【答】如果在编译时不能确定、只有在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态。
方法的重载都是编译时多态。
方法的覆盖变现出两种多态性,当对象获得本类的实例时,为编译时多态,否则为运行时多态。
3-34什么是抽象类?
在什么情况下需要设计抽象类?
抽象类中是否必须有抽象方法?
【答】使用关键字abstract声明的类称为抽象类,使用abstract声明的成员方法为抽象方法。
抽象类中可以不包含抽象方法,但包含抽象方法的类必须被声明为抽象类。
4-1什么是接口?
接口和抽象类有哪些相同之处和不同之处?
【答】接口是一组常量和抽象方法的集合。
在Java中,接口是一种引用数据类型,用关键字implements声明。
接口与抽象类的区别为:
相同点:
1.两者都包含抽象方法,约定多个类共用方法的参数列表和返回值。
2.两者都不能被实例化。
3.两者都是引用数据类型,其变量可被赋值为子类或实现接口类的对象。
不同点:
1.抽象类约定多个子类之间共同使用的方法;接口约定多个互不相关类之间共同使用的方法。
2.抽象类与子类之间采用单重继承机制;一个类实现多个接口则实现了多重继承的功能。
3.抽象类及其类中成员具有与普通类一样的访问权限;接口的访问权限由public和缺省两种,接口中成员的访问权限均是public。
4.抽象类中可以包含非抽象方法,也可以声明构造方法;接口中的方法必须全部是抽象方法,不能声明构造方法。
5.抽象类中可以声明成员变量,子类可以对该成员变量赋值;接口中只能声明常量。
4-3什么是单重继承?
什么是多重继承?
类的层次体系为什么需要多重继承?
单重继承有什么缺点?
既然有缺点,为什么Java仍然采用单重继承?
Java怎样实现多重继承?
【答】单重继承就是一个类只能有一个父类。
多继承就是可以有多个父类。
现实中的对象往往表现出多种特性,用单重继承无法客观描绘,因此需要多重继承。
但是C++的多重继承过于复杂,因此Java用“单重继承+接口”代替了多重继承,以提高运行效率,增加安全性,降低复杂性。
4-8Java为什么需要声明基本数据类型的包装类?
基本数据类型的包装类有哪些?
【答】为实现完全面向对象的特性,Java为每个基本数据类型都声明有对应的一个类。
公有8个基本数据类型的包装类:
Byte、Short、Integer、Long、Float、Double、Character、Boolean
5-1Java为什么要采用异常处理机制?
Java的异常处理是怎样实现的?
异常处理机制能够解决程序中遇到的所有错误吗?
哪些错误不是异常处理能够解决的?
【答】异常处理和捕获和处理运行时错误的一种机制。
异常处理机制使程序具有处理错误的能力。
即使发生了运行错,应用程序能够捕获异常并及时处理异常,使程序从运行错误中很好地恢复并继续运行,而不会导致程序运行非正常终止。
而且如果当前方法没有能力处理异常,还可以将异常转交给调用者处理。
异常处理机制将运行时错误封装成若干错误类和异常类,并提供异常处理语句用于处理在程序中实现对运行时错误的发现和及时处理。
异常处理机制并不能解决程序中的所有错误,例如内存溢出、栈溢出等。
5-7为什么将字符串转换成数值类型时会抛出异常?
抛出什么异常?
【答】并不是所有的字符串都能转换成数值型,当遇到一个不能转转换成数值型的字符串时,Java抛出NumberFormatException异常。
5-11说明throw语句与throws子句的区别。
【答】1.throws用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常,所以它常用在方法的后面。
比如publicstaticvoidmain(String[]args)throwsSQLException
2.throw用于抛出代码层次的异常,常用于方法块里面的代码,常和try...catch....语句块搭配实用,比throws的层次要低。
7.1什么是进程?
什么是线程?
进程与线程的关系是怎样的?
【答】进程:
进程是一个可并发的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。
线程:
线程是操作系统进程中能够独立执行的实体,是处理器调度和分派的基本单位。
线程是进程的组成部分,每个进程内允许包含多个并发执行的线程。
7.4Java提供了哪些接口和类实现多线程机制?
【答】Java主要提供了java.lang.Runnable接口和Thread线程类来实现多线程机制。
7.5一个线程对象的生命周期有哪几种状态构成?
各状态之间是如何变化的?
【答】
线程对象的生命周期主要包括:
新建态、就绪态和运行态、阻塞态和等待态、终止态。
新建态通过start()方法是线程成为运行态,当运行态遇到sleep()或wait()方法时就进入等待态,而当sleep()时间到或通过notify()方法线程就又进入了运行态;当运行态遇到synchronized()方法时就进入阻塞态,当线程获得互斥锁使用权时就又到了运行态;当线程的run()方法结束时整个线程就进入了终止态,整个线程结束。
7.6Java提供了哪些方法能够改变线程状态?
程序中能够调度线程立即执行吗?
【答】Java中提供了start()方法来启动已创建的线程对象;sleep()方法使当前线程睡眠若干毫秒,线程有运行态进入等待态,但是不交出临界区的锁;yield()方法暂停当前线程的执行,允许其他线程竞争CPU;stop()方法来结束一个线程;wait()方法将本线程设为等待态;notify()方法来唤醒当前处于等待态的线程;interrupt()方法改变当前线程的中断状态,但是当前线程还可以继续执行。
7.10多线程间共享数据时会发生怎样的并发执行错误?
【答】当几个线程共享数据时,一个线程的执行可能影响其他线程的执行结果,并导致错误的程序运行结果。
第1章Java概述
1.编译javaapplication源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java
2.执行一个java程序fristapp的方法是运行javafristapp
3.main()方法的返回类型是void
4.在java代码中,publicstaticvoidmain方法的参数描述正确的是stringargs【】,string【】args
5.内存的回收程序负责释放无用内存√
6.java体系主要分为javaME,JavaSE,JavaEE三大块
第2章Java基础
1.Java语言中,下列标识符错误的是40name
2.java变量中,以下不属于引用类型的数据类型是字符型
3.2×
4.C
5.A
6.for循环的一般形式为;for(初值;终值;增量),以下对for循环的叙述,正确的是初值和增量都是赋值语句,终值是条件判断语句
7.当输入下面选项中3值时,将会输出default
8.下面哪种方法能够支持javadoc命令/**…*/
9.下面声明一个string类型的数组正确的是stringstr[]
10.下面定义一个整型数组,不合法的是int[][]array=newint[][4];
11.给定代码;。
。
。
。
。
下面叙述正确的是输出的结果为:
0
12.java语言规定,标示符只能由字母,数字美元符$和下划线租成,并且第一个字符不能是数字;java是区分大小写的。
13.表达式1/2*3的计算结果是0;设x=2,则表达式(x++)/3的值是0
14.数组的长度可以用其属性length获得;创建一个数组对象可以使用new关键字创建
第3章面向对象基础
1.在java中引用对象变量和对象间有什么关系?
引用变量是指向对象的一个指针
2.对象是面向对象技术的核心所在,在面向对象程序设计中,对象是累的抽象×
3.构造方法何时被调用?
创建对象时
4.A,B,D
5.在java语言中在包p1中包含包p2,类A直接隶属于p1,类B直接隶属于包p2.在类c中要使用类a的方法和类b的方法b,需要选择importp1.*;importp1.p2,*;
6.java中,访问修饰符限制最高的是private
第4章类之间的关系
1.在java中,下面关于类的描述正确的是一个父类可以有多个