课后作业(2)

动手动脑:

1. Foo obj1=new Foo();这段代码为何报错?

  原因是程序中在Foo类中已经定义了一个有参的构造方法,当类中若已有有参的构造方法时,系统将不会再生成无参的构造方法,所以new Foo()就没有构造方法可以执行,所以报错。

2. 程序执行构造方法的顺序。

 A:当程序中既有有参的构造方法又有无参的构造方法时,若声明对象时有参,那么执行有参的构造方法,如图:

B:当声明的对象无参时,执行无参的构造方法,如图:

C:若无参的构造方法无内容时,先执行变量定义时默认的值,如图:

D:当没有默认值时,执行初始化块的内容:

3. 静态初始化的执行顺序:

  A:调用父类的静态初始化模块B:调用子类的静态初始化模块C:调用父类的初始化模块D:调用父类的无参构造函数E:调用子类的初始化模块F:调用子类的无参构造函数F:调用子类的有参构造函数

4. 如何用静态方法访问类的实例成员:、

   让静态方法引用该类的一个实例对象,如图:

 

Interger类的问题:

通过查询jdk找到Interger类中的valueOf方法,执行的代码如下:

public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

 

posted on 2017-10-17 21:39  机器学习小天才  阅读(125)  评论(0编辑  收藏  举报

导航