Java检查是否初始化了布尔值

Raf*_*son 1 java boolean initialization

我不是在讨论检查布尔值是否为空以检查它是否已初始化.因为那不行.所以我认为这可行:

public class MyClass{

    private boolean setting;

    private boolean getSetting{
        // get the setting;
    }

    public void main{
        if (setting != (true && false))
            setting = getSetting();
        // do main stuff;
    }

}
Run Code Online (Sandbox Code Playgroud)

它确实如此!所以我的问题是:与替代方案相比,这是一个很好的做法,即使用额外的变量:

public class MyClass{

    private boolean initialized = false;
    private boolean setting;

    private boolean getSetting{
        // get the setting;
    }

    public void main{
        if (!initialized)
            setting = getSetting();
            initialized = true;
        // do main stuff;
    }

}
Run Code Online (Sandbox Code Playgroud)

Str*_*hua 5

布尔值是一种原始类型,因此它们不需要初始化.布尔值的默认值是false.

第一个代码示例返回false,因为短语true && false总是等于false(&&检查两个语句是否都为真,它们不是,所以它是假的)然后你检查是否setting,这也是false不相等的,它是不是.一initialized因此变量可能是有用的.

您可以在此处阅读有关默认值和基本类型的更多信息.