当前位置: 代码迷 >> 综合 >> Java 知识点 --- 静态代码块初始化问题
  详细解决方案

Java 知识点 --- 静态代码块初始化问题

热度:44   发布时间:2024-01-26 23:51:06.0

1.变量是 static final 修饰的“编译期常量”,如 public static final String c = "C";

public class Test {public static void main(String[] args) {System.out.println(A.c);}}class A {public static final String c = "C";static {System.out.print("A");}
}运行结果如下:C
public class Test {public static void main(String[] args) {System.out.println(B.c);}}
class A {public static final String c = "C";static {System.out.print("A");}
}
class B extends A {static {System.out.print("B");}
}运行结果如下:C
public class Test {public static void main(String[] args) {System.out.println(B.c);}}
class A {static {System.out.print("A");}
}
class B extends A {public static final String c = "C";static {System.out.print("B");}
}运行结果如下:C

2.变量是 static final 修饰的“非编译期常量”,如 public static final String c = new String("C");

public class Test {public static void main(String[] args) {System.out.println(A.c);}}
class A {public static final String c = new String("C");static {System.out.print("A");}
}运行结果如下:AC
public class Test {public static void main(String[] args) {System.out.println(B.c);}}
class A {public static final String c = new String("C");static {System.out.print("A");}
}
class B extends A {static {System.out.print("B");}
}运行结果如下:AC
public class Test {public static void main(String[] args) {System.out.println(B.c);}}
class A {static {System.out.print("A");}
}
class B extends A {public static final String c = new String("C");static {System.out.print("B");}
}运行结果如下:ABC

3.变量是static 修饰,如 public static String c = "C";

public class Test {public static void main(String[] args) {System.out.println(A.c);}}
class A {public static String c = "C";static {System.out.print("A");}
}运行结果如下:AC
public class Test {public static void main(String[] args) {System.out.println(B.c);}}
class A {public static String c = "C";static {System.out.print("A");}
}
class B extends A {static {System.out.print("B");}
}运行结果如下:AC
public class Test {public static void main(String[] args) {System.out.println(B.c);}}
class A {static {System.out.print("A");}
}
class B extends A {public static String c = "C";static {System.out.print("B");}
}运行结果如下:ABC