Java中的代码块

2019-07-05  本文已影响0人  Apple_Boy

1.静态变量是被类中所有对象共享,静态方法不能访问类中实例成员

math类中的所有方法都是静态的:Math.Random,PI..

类名.方法名,类名.静态变量

类初始化阶段:先执行最顶层父类的静态初始化块,然后依次向下,直到执行当前类的静态初始化块

对象初始化阶段:先执行最顶层父类的初始化块,最顶层的构造器,然后依次向下,直到执行当前类的初始化块、当前类的构造器

(先加载类再初始化对象)

总的执行顺序:(优先级从高到低。)

静态变量-静态代码块-变量-初始化块-构造器

静态代码块>mian方法>构造代码块>构造方法>普通代码块(在方法中的代码块)。

静态代码块和构造代码块的异同点

相同点:都是JVM加载类后且在构造函数执行之前执行,在类中可定义多个,一般在代码块中对一些static变量进行赋值。

不同点:静态代码块在非静态代码块之前执行。静态代码块只在第一次new时执行一次,之后不在执行。而非静态代码块每new一次就执行一次。

此外,还有同步代码块:

使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数据的不一致性。同步代码块需要写在方法中。

总结

1.静态代码块是用来给类做初始化的,类加载是就会被执行,(注意它只被执行了一次);

 2.构造代码块是用来给对象做初始化的,每次创建对象都会被执行,而且优先于构造方法先执行;

 3.构造方法是用来给对象进行初始化的,每次创建对象就会选择相应的构造方法执行

4.普通代码是在方法里或者语句中出现的{},执行方式由他们的出现顺序决定,依次从上到下,先出现先执行;

上一篇下一篇

猜你喜欢

热点阅读