【问题标题】:Concatenation of Boolean and IntBoolean 和 Int 的连接
【发布时间】:2015-10-05 10:08:46
【问题描述】:

为什么我不能这样做? 我知道可以将 int 和字符串或与布尔值(真或假)连接起来,但不能将布尔值与 int 相加。

当你添加一个带有布尔值的 int 时会发生什么?为什么会显示错误?

System.out.println(a.length() + a.startsWith("a"));

我也明白这段代码的解决方法是

System.out.println(""+a.length() + a.startsWith("a"));

使用串联。

【问题讨论】:

  • 这不是解决方法。这是做你想做的事情的正确方法。
  • booleanBooleanint 应该做什么没有标准定义。对于 String 来说,它只是一种方便的方法。
  • @zubergu,使用 (""+a.lenght()) 这不仅是一种错误的做法,而且也是一种非常丑陋的解决方法。
  • @zubergu,is 是一种解决方法,它强制 Java 将表达式解释为字符串,但不清楚意图是什么。有更好的方法来实现这一点。

标签: java string boolean primitive


【解决方案1】:

因为+操作有不同的作用。

在第一个示例中,您尝试使用 Number + Boolean。而且这没有意义,所以编译器会报错。

在第二个示例中,您尝试 String + Number(允许作为字符串 - 浓度并返回一个字符串)。之后你尝试 String + boolean (这也是允许的)

【讨论】:

  • 是的。当您对两个数字(整数、双精度数等)执行 + 运算时,Java 知道您正在执行算术运算。当您有两个针对 + 操作的字符串时,Java 也知道您正在执行连接。就像 Denis 说的那样,Number + Boolean 并不是很明显,所以 Java 会抛出一个错误,表明你需要更明确。
【解决方案2】:

当你添加一个带有布尔值的 int 时会发生什么?为什么会显示错误?

因为没有为这些操作数定义+ 运算符。

【讨论】:

    【解决方案3】:

    使用Boolean.toString()静态方法获取布尔值的字符串表示:

    Boolean.toString(a.startsWith("a"));
    

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多