动手动脑03

(1)请输入并运行以下代码,得到什么结果?

原因是因为在obj1上有开辟了一个新空间obj2.它们两个是独立的,无法相等。

(2)以下代码为何无法通过编译?哪儿出错了?

软件提示Foo函数未定义。原因是:因为如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。

(3)以下代码输出结果是什么?

运行结果为100   300

执行类成员定义时指定的默认值或类的初始化块,先执行哪个要看先后顺序。 执行类的构造函数。类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些对象创建时必须执行的代码。

(4)

静态代码块无论有多少,都是最先执行;静态代码块只执行一次,之后执行构造代码块,最后执行构造方法。无论子类是否调用父类构造方法,父类的所有构造代码块、构造方法均先于子类的构造代码块、构造方法执行。静态代码块也遵循父类先于子类执行的特点。如果子类存在调用父类的有参构造方法,那么执行父类构造方法时就不会执行无参构造方法(使用this()调用除外)。

(5)

静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)?

(6)两对整数明明完全一样,为何一个输出true,一个输出false?

        因为Integer类内有个东西叫常量池。在为Integer类变量赋值时,若取值在-128到127内,则会在常量池中寻找内存地址,如果取值不在常量池内(即-128到127),则会为变量开辟新的内存空间来存值。以下为Integer类的赋值方法

猜你喜欢

转载自www.cnblogs.com/Excusezuo/p/9824606.html