java - 在这种情况下,为什么 java 将类 Boolean 的空对象替换为 false?

标签 java

所以我做了一个数组:

public static Boolean[][] squaresWithPieces = new Boolean[][]{
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE},
    {Boolean.TRUE,Boolean.TRUE,null,null,null,null,Boolean.FALSE,Boolean.FALSE}
};

当我运行 main() 方法时,它会执行以下操作:

for (int row = 0; row < squaresWithPieces.length; row++)  // Cycles through rows.
{
    for (int col = 0; col < squaresWithPieces[row].length; col++)  // Cycles through columns.
    {
        System.out.printf("%5b ", squaresWithPieces[row][col]);  // Change the %5d to however much space you want.
    }
    System.out.println();  // Makes a new row
}

我得到以下输出:

 true  true false false false false false false 
 true  true false false false false false false 
 true  true false false false false false false 
 true  true false false false false false false 
 true  true false false false false false false 
 true  true false false false false false false 
 true  true false false false false false false 
 true  true false false false false false false

为什么会这样?我认为使用 Boolean 类允许 boolean 值是“null”?

This question也表明。

最佳答案

Why is that the case? I thought using Boolean class allows Booleans to be "null" ?

当您将值打印到屏幕时,您的示例突出显示了值与值的表示 之间的区别。打印出来的字符不一定反射(reflect)真实值。在这种情况下,您使用的是 %b 格式说明符,它只能打印 truefalse,即使实际值是其他值也是如此。

您可以 experiment with this by changing %b to %s .这可能会让您更准确地表示基础值。

关于java - 在这种情况下,为什么 java 将类 Boolean 的空对象替换为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71474818/

相关文章:

java - 以编程方式更改android中的字体

java - 在硬编码的服务器路径上上传文件 Servlet

java - 更新配置有删除孤儿 : can't save the parent object 的集合时出现 HibernateException

java - 使用 Dagger 将依赖项注入(inject)单例?

java - 有没有jvm使用三色标记算法来标记可达对象?

java - java中如何获取ctime?

java - 为什么我的代码中字符串比较失败?

java - 基于偏移量的 ZoneId 的 ID 无效 - Java 8

Java BufferedReader readLine() 在 read() 之后突然不工作

java - 设置 Docker 来处理 Maven 和 Gradle?