Java中布尔(原语)和布尔(原语包装器)的默认值是什么?
当前回答
布尔 可以是真或假。 默认值为false。
(来源:Java原始变量)
布尔 可以是表示true或false的布尔对象,也可以是null。 默认值为空。
其他回答
布尔是一个对象。如果它是一个实例变量,它将为null。如果在方法中声明,则必须初始化它,否则将会出现编译器错误。
如果你声明为一个原语,即布尔。如果是实例变量(或类变量),该值默认为false。如果它是在一个方法中声明的,你仍然必须将它初始化为true或false,否则将会出现编译器错误。
如果你需要问,那么你需要显式地初始化你的字段/变量,因为如果你必须查找它,那么其他人也可能需要这样做。
从这里可以看出,原语布尔值为false。
正如其他人提到的,布尔值默认为空。
布尔(对象)的默认值是null。 布尔(原语)的默认值是false。
class BooleanTester
{
boolean primitive;
Boolean object;
public static void main(String[] args) {
BooleanTester booleanTester = new BooleanTester();
System.out.println("primitive: " + booleanTester.getPrimitive());
System.out.println("object: " + booleanTester.getObject());
}
public boolean getPrimitive() {
return primitive;
}
public Boolean getObject() {
return object;
}
}
输出:
primitive: false
object: null
这似乎是显而易见的,但我有一个情况,杰克逊,而序列化一个对象到JSON,在调用getter后抛出一个NPE,就像这个,返回一个原始布尔没有分配。这使我相信Jackson正在接收一个null,并试图在它上调用一个方法,因此是NPE。我错了。
这个故事的寓意是,当Java为原语分配内存时,即使没有初始化,该内存也有一个值,对于布尔值,Java将其等同于false。相比之下,当为一个未初始化的复杂对象(如布尔对象)分配内存时,它只为该对象的引用分配空间,而不是对象本身——内存中没有对象可以引用——因此解析该引用的结果为null。
我认为严格地说,“默认为false”有点离题。我认为Java在显式设置之前不会分配内存并将其赋值为false;我认为Java分配内存,无论内存的值是什么,都与'false'的值相同。但实际上它们是一样的。
任何Object的默认值,比如Boolean,都是null。
布尔值的默认值为false。
注意:每个原语都有一个包装器类。每个包装器都使用默认值为null的引用。基本类型有不同的默认值:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
注意(2):void有一个包装器void,它也有一个默认值为null,是它唯一可能的值(不使用hacks)。
推荐文章
- SSL握手警告:unrecognized_name错误,因为升级到Java 1.7.0
- 如何将一个颜色整数转换为十六进制字符串在Android?
- 格式浮动到小数点后n位
- 我如何得到一个字符串的最后一个字符?
- 如何设置JFrame显示居中,不管显示器分辨率?
- 字符串格式中的命名占位符
- 在Java中构造函数可以抛出异常吗?
- 有没有办法在Java中模拟c++的“朋友”概念?
- 为什么IntelliJ给我“包不存在”的错误?
- 断言对象是特定类型
- connectexception:拒绝连接
- H2内存数据库。表未找到
- Java中是否有一个等价于c#中的空合并运算符(??)?
- package.html或package-info.java
- “文本”和新字符串(“文本”)之间的区别是什么?