zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java随记3

2023-09-27 14:25:52 时间

1.初始化

初始化块在构造器执行之前执行,类初始化阶段先执行最顶层父类的静态初始化块,依次向下执行,最后执行当前类的静态初始化块;创建对象时,先调用顶层父类的构造方法,依次向下执行,最后调用本类的构造方法。

执行顺序:

父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造函数-》子类构造代码块-》子类构造函数

初始化过程: 
  1. 初始化父类中的静态成员变量和静态代码块 ;

  2. 初始化子类中的静态成员变量和静态代码块 ;

  3. 初始化父类的普通成员变量和代码块,再执行父类的构造方法;

  4. 初始化子类的普通成员变量和代码块,再执行子类的构造方法;

2.类方法中可以直接调用对象变量?

不能,静态方法中不能调用对象的变量,因为静态方法在类加载时就初始化,对象变量需要在新建对象后才能使用

3.当我们需要所有线程都执行到某一处,才进行后面的的代码执行我们可以使用?

CyclicBarrier

CountDownLatch 是等待一组线程执行完,才执行后面的代码。此时这组线程已经执行完。

CyclicBarrier 是等待一组线程至某个状态后再同时全部继续执行线程。此时这组线程还未执行完。

4.list是一个ArrayList的对象,可以在Iterator遍历的过程中正确并安全的删除一个list中保存的对象?

Iterator 支持从源集合中安全地删除对象,只需在 Iterator 上调用 remove() 即可。这样做的好处是可以避免
ConcurrentModifiedException ,当打开 Iterator
迭代集合时,同时又在对集合进行修改。有些集合不允许在迭代时删除或添加元素,但是调用 Iterator 的remove()
方法是个安全的做法。