这学期刚开的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