静态代码块static{ }---static 成员变量
public class Block { static int b=100; static { b=-1; } //测试 public static void main(String[] args) { System.out.print(b);//-1 } } //----------------------------- public class Block2 { static { b=-1; } static int b=100; //测试 public static void main(String[] args) { System.out.print(b);//100 } }
构造代码块{ }--- 成员变量
public class Block { int a=10; { a=30; } { a=20; } //测试 public static void main(String[] args) { System.out.print(new Block().a);//20 } } //----------------------------- public class Block { { a=30; } int a=10; { a=20; } //测试 public static void main(String[] args) { System.out.print(new Block().a);//20 } } //========================== public class Block { { a=30; } { a=20; } int a=10; //测试 public static void main(String[] args) { System.out.print(new Block().a);//10 } }
结论: static{ }---static 变量, 从上到下,依次执行,以最后一个为准;
{ }--成员变量:从上到下,依次执行,以最后一个为准;