Java类初始化顺序

1. Java类初始化顺序

Java类初始化顺序(无继承):
  静态变量–>静态初始化块–>其他变量–>初始化块–>构造器
Java类初始化顺序(有继承):

  先静后动,先父后子,父类静态初始化—->子类静态初始化—->父类初始化块—->父类构造方法—->子类初始化块—->子类构造方法。

以下例子执行结果:6375142
Test2构造函数加上super()不影响结果
public class Test2 extends Test1 {
{
System.out.print(“1″);
}

Test2() {
System.out.print(“2″);
}

static {
System.out.print(“3″);
}
{
System.out.print(“4″);
}

public static void main(String[] args) {
new Test2();
}
}

class Test1 {
Test1() {
System.out.print(“5″);
}

static {
System.out.print(“6″);
}
{
System.out.print(“7″);
}
}

2.Java开发中”==”与”equals”

public class TestEquals {
public static void main(String args[]){
Double d1 = new Double(10);
Double d2 = new Double(10.0);
Double d3 = new Double(10);
System.out.println(d1==d2);//false value
System.out.println(d1==d3);//false value
System.out.println(d1.equals(d2));//true object
System.out.println(d1.equals(d3));//true object
Integer i1 = new Integer(10);
System.out.println(d1.equals(i1));//false
Long l1 = new Long(10);
System.out.println(l1.equals(i1));//false
//System.out.println(l1==i1);//false,编译错误
System.out.println(l1.intValue()==i1.intValue());//true
String s1 = “test”;
String s2 = “test”;
String s3 = new String(“test”);
System.out.println(s1==(s2));//true
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true
System.out.println(s1==(s3));//false
}
}

posted @ 2011-10-31 13:00  妖老山黑  阅读(183)  评论(0编辑  收藏