java课后答案(整理)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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-10 Java定义了几个关键字用于表示几种访问权限?各表示什么含义?类有几种访问权限?类中成员有几种访问权限?分别使用什么关键字?
【答】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-8 Java为什么需要声明基本数据类型的包装类?基本数据类型的包装类有哪些?
【答】为实现完全面向对象的特性,Java为每个基本数据类型都声明有对应的一个类。公有8个基本数据类型的包装类:Byte、Short、Integer、Long、Float、Double、Character、Boolean 5-1Java为什么要采用异常处理机制?Java的异常处理是怎样实现的?异常处理机制能够解决程序中遇到的所有错误吗?哪些错误不是异常处理能够解决的?
【答】异常处理和捕获和处理运行时错误的一种机制。异常处理机制使程序具有处理错误的能力。即使发生了运行错,应用程序能够捕获异常并及时处理异常,使程序从运行错误中很好地恢复并继续运行,而不会导致程序运行非正常终止。而且如果当前方法没有能力处理异常,还可以将异常转交给调用者处理。异常处理机制将运行时错误封装成若干错误类和异常类,并提供异常处理语句用于处理在程序中实现对运行时错误的发现和及时处理。异常处理机制并不能解决程序中的所有错误,例如内存溢出、栈溢出等。
5-7为什么将字符串转换成数值类型时会抛出异常?抛出什么异常?
【答】并不是所有的字符串都能转换成数值型,当遇到一个不能转转换成数值型的字符串时,Java抛出NumberFormatException异常。
5-11说明throw语句与throws子句的区别。
【答】1.throws 用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常,所以它常用在方法的后面。比如public static void main(String[] args) throws SQLException
2.throw 用于抛出代码层次的异常,常用于方法块里面的代码,常和try...catch ....语句块搭配实用,比throws的层次要低。
7.1 什么是进程?什么是线程?进程与线程的关系是怎样的?
【答】进程:进程是一个可并发的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。
线程:线程是操作系统进程中能够独立执行的实体,是处理器调度和分派的基本单位。
线程是进程的组成部分,每个进程内允许包含多个并发执行的线程。