Java程序设计2 第七章课后习题

       这学期刚开的Java,感觉对面向对象的思想还是没能很好的理解,下午无意翻了一下《Java编程思想》,Bruce Eckel在第二章写到Everything is an Object,这句话写得很简单,但不知道自己什么时候才能真正理解并很好的运用它!

 

      呵呵,废话就不多说了,下面把自己做的Java作业贴出来,现阶段讲的都是概念性的东西,下面的答案大部分是书上的原话,少量是自己的理解组织出来的!肯定有不少错误或者理解不到位的地方,希望大家能指出来,谢谢!

      说明一下,课本选用的是《Java 2 程序设计》,陈国君 陈磊 陈锡祯 刘洋 编著,清华大学出版社。这本书写得很烂(老师的原话),老师在讲课的时候会经常提到里面的错误,但他说这样其实也不错,省得他再去找反面教材来说明问题!

 

1.一个类的公共成员与私有成员有何区别?

答:公共成员用public来修饰,它可以被任何对象的方法访问到

    私有成员用private来修饰,它只允许自己类的方法访问

 

2.什么是方法的重载?

答:重载是指在面向对象的程序设计语言中,相同的方法名称如果参数的个数不同,或者是参数个数相同但类型不同,则方法具有不同的功能

 

3.一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗?为什么?

答:①构造方法的主要作用是完成对类对象的初始化工作

   ②能,因为Java会自动调用默认的构造方法

 

4.构造方法有哪些特征?

答:⑴构造方法的方法名与类名相同

    ⑵构造方法没有返回值,也不能写void

    ⑶构造方法的主要作用是完成对类对象的初始化工作

    ⑷构造方法一般不能由编程人员显式地直接调用,而是用new来调用

    ⑸在创建一个类的对象的同时,系统会自动调用该类的构造方法为新对象初始化

 

5.在一个构造方法内可以调用另一个构造方法吗?如果可以,如何调用?

答:可以.

    在某一构造方法里调用另一构造方法时,必须使用this关键字来调用,否则编译时将出现错误;this关键字必须写在构造方法内的第一行位置

 

6.静态变量与实例变量有哪些不同?

答:静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期;而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。

 

7.静态方法与实例方法有哪些不同?

答:①静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。

    ②静态方法在堆上分配内存,实例方法在堆栈上。

    ③实例方法需要先创建实例才可以调用,而静态方法则不用。

 

8.在一个静态方法内调用一个非静态成员为什么是非法的?

答:因为静态方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员,而只能处理属于整个类的成员,即静态方法只能访问静态成员变量或者调用静态成员方法

 

9.对象的相等与指向它们的引用相等,两者有什么不同?

答:对象的相等是指对象的值相等,但是两个占据不同内存空间的不同对象;指向他们的引用相等是两对象的内存地址相等。

 

10.什么是静态初始化器?其作用是什么?静态初始化器由谁在何时执行?它与构造方法有何不同?

答:静态初始化器是由关键字static修饰的一对花括号"{}"括起来的语句组。

   它是用来初始化工作的

   静态初始化器是在所属的类被加载入内存时由系统调用执行

   不同点:(1) 静态初始化器用于对类的静态数据成员进行初始化。而构造方法用来对新创建的对象进行初始化。

           (2) 静态初始化器不是方法,没有方法名、返回值和参数表。

           (3) 静态初始化器是在它所属的类加载到内存时由系统调用执行的,而构造方法是在系统用new运算符产生新对象时自动执行的。

 

 see Yizero by yizero.com

你可能感兴趣的:(Java,java,化工,虚拟机,编程,object,作业)