为什么默认情况下初始化的类原子布尔值不是真而是假?


java source code:
static {
try {
valueOffset = unsafe.objectFieldOffset
(AtomicBoolean.class.getDeclaredField("value"));
} catch (Exception ex) { throw new Error(ex); }
}

默认构造函数不执行任何操作:

public AtomicBoolean() {
}

变量"值偏移"是指内存中的偏移位置?我不明白为什么默认情况下构造函数将其初始化为"false"。我该如何理解这一点?

由于默认构造函数中未设置任何值,因此初始值是value字段的初始化值 - 这是一个 int,没有显式值,因此它的默认值为零。

源代码:

private volatile int value;
/**
* Creates a new {@code AtomicBoolean} with the given initial value.
*
* @param initialValue the initial value
*/
public AtomicBoolean(boolean initialValue) {
value = initialValue ? 1 : 0;
}
/**
* Creates a new {@code AtomicBoolean} with initial value {@code false}.
*/
public AtomicBoolean() {
}

将其设置为false与未初始化的boolean字段一致。

相关内容

  • 没有找到相关文章