袁绍欣《Java面向对象程序设计》(第二版)课后习题择要解答(作业)

本文的答案均为笔者所著,并非官方出品,不能确保全部正确

第一章

第二章

  1. D
  2. byte、int、short、char(不能是long,float,double)
  3. C
  4. 应改为“Float s = 2.3f”或“Double s=2.3[可有可无:d]”
  5. C

第三章

第四章

  1. 构造方法就是对类进行初始化的一个方法,虽然其他方法也可以做到修改/初始化类成员,但是它不同于其他方法的是,一个类就算程序员不写构造方法,虚拟机也会补上去,所以不如将所有对类成员的初始化写在构造函数里;抽象就是关注事物的某些重点信息,将其提炼成为一个简洁易懂的一个实例
  2. 对象位于栈空间;声明其实就是类似于创建这种类型的一个指针,所以可以引用对象。
  3. 作为参数传递时,对象传递的是对象的应引用,基本数据类型传递的是对应的值,是形式参数;
public class testclass1 {
	public static void fun(int n) {
		n=n+5;
	}
	public static void main(String[] args){
        int a=0;
        fun(a);
        System.out.println(a);//输出0
	}
}
  1. 当没有这个对象的引用存在时,会调用finalize方法(析构函数)
  2. 在没有引用变量引用它时,一个对象就会变成垃圾,在gc器决定回收时会释放对象,当一个对象的finalize方法被调用了就可以证明他被释放了。
  3. 如果类被final修饰后,不能继承;如果其他被final修饰,表示只能赋一次值。
  4. 被static修饰的属性是在java虚拟机装载类的时候被优先分配内存,并且被同一个含有static属性的类实例化的多个对象可以共用一个static属性(也只给static分配一次内存)。static方法只能访问被static修饰的属性。
  5. 因为只识别文件名,识别之后会自己加上后缀名,加了后缀就找不到了。
  6. DE

第五章

  1. 封装,继承,多态
  2. 用一种抽象数据结构—类将数据和有关数据的操作绑定在一起,同时被类所保护(访问权限)。
  3. 相互发送“消息”; 条件有类编写完整正确,相互之间有足够访问权限。
  4. 只能被子类和本类和本包中的类访问
  5. 有:Object clone(), boolean equals(Object obj), void finalize(), int hashCode(), String toString()等
  6. 有同样的函数名,大多执行同样的操作
  7. 子类方法覆盖父类方法需要子类访问权限大于等于父类,同名的static和非static方法不能覆盖,所以同名不一定能覆盖
  8. 封装为面向对象程序设计带来了高类聚,低耦合;继承带来了对功能重用的方便也为引用带来了更多新特点;多态带来了让接口方法有对其功能进行复用,又能扩充的能力。

第6章

  1. this和super的用法
    this:
    a. this.域变量、this.成员方法
    b. this(参数列表); 引用重载构造方法
    c. this 指代当前对象
    super:
    a. super.域变量、super.成员方法(参数列表),用于调用父类方法
    b. suoper(参数列表);构造方法的继承
  2. 子类实例化过程
    a. 调用子类构造方法
    b. 若继承了其他类,隐式执行super(参数列表);
    c. 若第一句为this(参数列表);执行this(参数列表);
    d. 对本类字段初始化
    e. 构造方法中的语句
  3. 类的域变量一般在构造方法中初始化,有的时候是隐式初始化的,在定义的时候是不可以初始化的,而方法中定义的局部变量必须自己显式赋值,而且可以在定义的时候初始化。
  4. 可参考课本的形状类
  5. 接口可以理解为一个产品(功能类)的说明书(告诉类的使用者有哪些方法),当某一种功能换了一种方法实现了(目的不变)(实现了这个接口的类对某一种方法进行了修改,但逻辑与之前相同),使用者不需要关心改变,只需看这个说明书即可。参考洗衣机接口
  6. 抽象类和接口都含有抽象方法,用于继承/实现了它的子类根据自身需要具体实现。不同的是,接口的实现类之间虽然有关系但是不同的操作逻辑较多,而抽象类的继承类之间有关系,相同操作逻辑较多
  7. 有3种方法:使用object类的.equals()方法,使用==比较,使用instanceof比较
  8. 内部类的使用主要是为了将某个类的内部进行封装时使用,而匿名内部类则是为了简化代码。
  9. D
  10. 数据隐藏指用特定方法将一些数据进行读写保护,使得外界不能直接访问。

第七章

  1. 异常分为运行时异常和非运行时异常,只用捕获运行时异常即可,所以错误
  2. 对未赋值的引用变量进行调用,使用。
  3. 如下
exception000
finally111
finished
finally111
exception
finished
exception
finished

第九章

  1. 线程:是操作系统能够进行运算调度的最小单位、进程:是系统进行资源分配和调度的基本单位。
  2. 应用程序的主线程以及使用Thread构造的线程都默认为前台线程,线程池中的线程是后台线程。
  3. 创建线程2种方法。一是继承thread类,重写run方法,二是实现runnable接口。
  4. 就绪,阻塞,运行。由阻塞变为就绪状态使用notify方法,由运行变为阻塞可以用wait实现,其余由java虚拟机自行处理。
  5. 不同线程对同一个资源修改访问时可能出现问题。彻底解决线程安全性问题:关闭缓存,公享资源使用volatile修饰,操作共享资源的方法用synchronized修饰。
  6. 线程之间的通讯通过wait,notify来实现。
  7. 每个线程都被其他线程所wait,之后的现象
  8. A中代码块使用synchronized{}包裹,B方法直接使用synchronized修饰

第14章

  1. 按流动方向,分为输入流和输出流;按读取类型,分为字符流和字节流
  2. FileOutputStream、FileInputStream;接口有:FilenameFilter

第15章

  1. 七层。应用层与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的;表示层这一层的主要功能是定义数据格式及加密。会话层,它定义了如何开始、控制和结束一个会话。传输层这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。网络层这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。数据链路层定义了在单个链路上如何传输数据。物理层,OSI的物理层规范是有关传输介质的特性,这些规范通常也参考了其他组织制定的标准。
  2. TCP链接需要折返3趟数据传输,之后才进行链接,而UPD不考虑对方是否愿意接受,而且容易损失数据。
  3. 传输层;
  4. 在客户端处的socket对象创建时使用IP和端口,在主机和客户端创建数据报都需要IP和端口。

第16章

你可能感兴趣的:(学习)