【问题标题】:Boolean Array in Java [closed]Java中的布尔数组[关闭]
【发布时间】:2021-05-04 02:10:36
【问题描述】:

为什么我们不能在不使用 new 关键字的情况下为 Java 中的布尔数组赋值?

例如:

boolean[ ] aryBools = {true, false, true, false};

【问题讨论】:

  • 您提供的语法完全有效。我检查了一下,它可以在 Java 15 中编译。您使用的是哪个版本?
  • 可以boolean[] arrayBools = {true, false, true, false};.
  • 什么意思?您是否尝试编译给定的示例?这是完全有效的。我怀疑它被编译成与 new boolean[]{true,false,true,false} 相同的字节码,但这并不意味着我们必须这样写。
  • 提示:当你想问为什么不能编译时,试着编译你发布的 exact 代码,并包含确切的错误信息(复制/粘贴)在问题中。遵循该准则会让您看到您可以做到这一点,然后您就不会问这个问题了。

标签: java arrays boolean


【解决方案1】:

Java 是键入的。你不能制作一个'whatever'数组,java不会试图弄清楚你的意思。想象一下你写的:{new Apple(), new Pear()},应该是Fruit[]Object[],还是SuperMarketbestseller[]

因此,语法是new boolean[] {true, false, true, false}

只有一个例外:当且仅当为新声明的数组类型的变量/字段创建初始化表达式时,您可以省略它。具体来说:

boolean[] b = {true, false, true, false};

是合法的 java,一直是合法的 java,如果它在你所做的任何事情中都不合法,那么你就没有 java,或者更有可能的是,你有一个在语法上无效的文件。所以摆脱它,创建一个新文件,然后尝试一下:

class Example {
    boolean[] test = {true, false};
}

你会发现这编译得很好。但是,这种缩短的语法只有在直接分配给变量声明时才有效(不仅仅是test = {true, false};,不,boolean[] test = {true, false};)。

【讨论】:

  • “当且仅当直接分配给数组类型的变量/字段”这是误导性的:boolean[] b; b = {}; 直接分配给变量(不太确定间接分配是什么)。只能在变量的initializer,即变量的声明中使用数组初始化语法。
  • 后续段落强调了这一点。
  • 然后在你第一次提到它时说:“如果且仅声明一个变量”,因为它在赋值中无效。
  • 答案已更新。
猜你喜欢
  • 2012-04-07
  • 2013-10-19
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2015-01-07
  • 2012-11-22
相关资源
最近更新 更多