Java表达式中的双引号是什么意思?

时间:2013-12-05 02:53:24

标签: java expression quotes

双引号在Java中意味着什么?

我有:

"2 + 2" + 3 + 4

"hello 34" + 2 * 4

有人可以解释如何评估这些表达式吗?

2 个答案:

答案 0 :(得分:0)

" "内的任何内容都将成为String。和string + Int = String。例如,

"2 + 2" + 3 + 4

您将获得2 + 234

在你的问题中,

"2 + 2" + 3 + 4 +"hello 34" + 2 * 4 //i added '+' between '4' and 'hello' since there is an error in expression

将按如下方式进行评估:

1. output = "2 + 2" + 3 + 4 +"hello 34" + 2 * 4
2. output = "2 + 2" + 3 + 4 +"hello 34" + 8 //operation '*' evaluated first
3. output = "2 + 23" + 4 +"hello 34" + 8
4. output = "2 + 234" +"hello 34" + 8
5. output = "2 + 234hello 34" + 8
6. output = "2 + 234hello 348"

答案 1 :(得分:0)

x1=np.arange(1,101) y1=np.arange(50,151) classname.plotBar(x1,y1) 运算符在Java中有两个含义。

  • 当两个操作数均为数字 1 时,表示算术加法。
  • 任何一个操作数的类型为TypeError: plotBar() takes 2 positional arguments but 3 were given时,表示字符串连接。

在字符串连接的情况下,非字符串参数首先是字符串。该过程称为字符串转换,并在JLS 5.11.1中指定。步骤如下:

  • 原始类型将转换为字符串 ,就像它被装箱一样,并在装箱的值上调用+
  • String转换为字符串toString()
  • 通过调用null可以转换任何其他引用类型。

JLS 15.8.1中指定了"null"串联的完整语义。


@Baby's answer解释了问题中第一个示例的工作方式,第二个示例与此类似。 (请注意,toString()的优先级高于+,因此*被视为乘法,然后在串联中使用+。)

第三个示例是将数字转换为2 * 4的常见Java习惯用法。因此

8

从表面上看,注释中的版本应该更有效。与String串联将出现表示正在执行不必要的串联。但是,如果您仔细阅读规范的措辞,很明显,允许Java编译器 将第一种形式优化为第二种形式。据我了解,它们在Java的最新版本中确实存在。

许多人认为 1 + "" -> "1" // equivalent to Integer.toString(1) 1.0 + "" -> "1.0" // equivalent to Double.toString(1.0) 这个惯用语是不好的做法。但是,这很常见,您在遇到它时需要识别它。


1-在这种情况下,这表示任何整数或浮点基元类型,或任何匹配的包装器类型。完整的集合是""... + ""byteshortcharintlong,{{1} },floatdoublejava.lang.Bytejava.lang.Shortjava.lang.Characterjava.lang.Integer