动手动脑问题3
一.对象变量也可以使用“==”判断两变量值是否相等吗?
如果是引用类型的对象作比较,则比较对象地址,如果是比较字符串或数字则比较值是否相等。
二.
.
请总结一下,这个方法有哪些“与众不同之处”,你能列出几条?
构造方法与类名相同,没有返回值。
三.以下代码为何无法通过编译?哪儿出错了?
如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。
四.使用上页幻灯片中定义的类,以下代码输出结果是什么?
运行结果:
Java进行初始化的地方有两个:初始化块和构造函数。由上面两图中可以发现,Java字段初始化规律系统会按顺序对Java字段进行初始化,如果有好几个方法都对同一个变量进行了初始化。Java会将最后一次的初始化结果赋给该变量。
如果在主函数中创建对象时没有形参时,如果在类中定义了公共的变量并给与了赋值,那么就会把值赋给主函数中的变量,再调用类中的默认构造函数,如果在主函数中创建对象时有形参,则调用类中对应的构造函数。
五.请运行TestStaticInitializeBlock.java示例,观察输出结果,总结出“静态初始化块的执行顺序”。
输出结果:
结论:创建Java对象时,系统总是先调用静态初始化块,静态初始化块是类相关的,用于对整个类进行初始化处理,静态初始化块也属于类的静态成员,因此不能访问非静态成员。
六.静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?请编写代码验证你的想法。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),当需要在静态方法中访问本类中的静态成员时,需定义一个该类的对象,然后在方法中通过对象名.静态成员的方法来访问。在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。
七.两对整数明明完全一样,为何一个输出true,一个输出false?
第一次比较的的地址是取自同一个地址的数字,而第二次比较的数是创建了两个不同地址的对象,所以第一次比较的地址相同,第二次不同。
posted on 2017-10-20 17:19 面向bug的程序设计 阅读(127) 评论(0) 编辑 收藏 举报