1.

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

因为查不到Foo(),所以无法通过编译。错在:在错误的下方中已经定义了Foo类,之后定义的Foo()中有参数,而在错误处中Foo()中没有参数,所以导致错误

2.

package classtext1;

public class homework {
    {
        field=200;
        }
public int     field = 100;
public homework(int value) {
    this.field=value;
}
public homework() {

}


public static void main(String[] args) {
    homework obj = new homework();
    System.out.println(obj.field);
    obj=new homework(300);
    System.out.println(obj.field);
}
}

编译结果:

 函数中定义的默认值谁排在前面谁被执行。而有参的构造函数则调用谁则会执行谁。

3.

静态初始化块只执行一次,而创建子类型的对象时其父类型的静态初始化块的执行。

4.

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

public class Satic {
public static void Satic1(Satic n) {
    n.Satic2();
}
public static void Satic2() {
    System.out.println("hello world");
}
public static void main(String[] args) {
    Satic b = new Satic();
    Satic1(b);

}
}

5.两对整数明明完全一样,为何一个输出true,一个输出false?

输出诡异的结果,原因何在?

Integer类只对-128~127之间的对象做了缓存,(Integer)127 == (Integer)127两边装箱后,实际指向堆内存中同一个对象,(Integer)129 == (Integer)129,装箱为引用类型后,没有做缓存,指向堆内存中不同对象,所以比较结果为false。其源代码为

 从中可以更清楚的看到。

6.使用类的静态字段和构造函数,可以跟踪某个类所创建对象的个数。请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”

public class Satic {
    public static int sum=0;
public static void Satic1(Satic n) {
    ++sum;
    n.Satic2();
}
public static void Satic2() {
    System.out.println("你已经创建了"+sum+"个对象");
}
public static void main(String[] args) {
    Satic b = new Satic();
    Satic1(b);

}
}
02-12 05:17