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

Java表达式中的双引号是什么意思?,java,expression,quotes,Java,Expression,Quotes,双引号在Java表达式中是什么意思 我有: "2 + 2" + 3 + 4 "hello 34" + 2 * 4 1 + "" 有人能解释一下这些表达式是如何计算的,以及最后一个表达式的用途是什么吗?在中的任何内容都将变成字符串。和string+Int=string。例如 "2 + 2" + 3 + 4 您将获得2+234 在你的问题中 "2 + 2" + 3 + 4 +"hello 34" + 2 * 4 //i added '+' between '4' and 'hello' si

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

我有:

"2 + 2" + 3 + 4

"hello 34" + 2 * 4

1 + ""
有人能解释一下这些表达式是如何计算的,以及最后一个表达式的用途是什么吗?

中的任何内容都将变成
字符串。和
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"

+
运算符在Java中有两种含义

  • 当两个操作数都是numeric1时,表示算术加法
  • 当任一操作数的类型为字符串时,表示字符串串联
在字符串连接的情况下,字符串的第一个参数是非字符串参数。该过程称为字符串转换,并在中指定。程序如下:

  • 原语类型被转换为字符串,就像它被装箱一样,并且对装箱的值调用了
    toString()
  • null
    转换为字符串
    “null”
  • 任何其他引用类型都可以通过调用其
    toString()
    进行转换
中指定了
+
串联的完整语义


解释问题中第一个示例的工作原理,第二个示例与此类似。(请注意,
*
的优先级高于
+
,因此将
2*4
计算为乘法,然后将
8
用于串联。)

第三个例子是一个常见的Java习语,用于将数字转换为
字符串。因此

  1 + "" -> "1"        // equivalent to Integer.toString(1)
  1.0 + "" -> "1.0"    // equivalent to Double.toString(1.0)
从表面上看,评论中的版本应该更有效。与
连接似乎是在执行不必要的连接。但是,如果仔细阅读规范的措辞,很明显Java编译器可以将第一种形式优化为第二种形式。据我所知,他们确实。。。在Java的最新版本中

许多人认为<密码>…“
习惯用法是一种坏习惯。然而,这是很常见的,当你遇到它时,你需要识别它



1-在此上下文中,这意味着任何整型或浮点基元类型,或任何匹配的包装器类型。整套软件包括
byte
short
char
int
long
float
double
java.lang.byte
java.lang.short
java.lang.Character
java.lang.Integer
java.lang.lang.float
,和
java.lang.Double

Ah,因此双引号将其转换为字符串,使+运算符进行串联而不是算术运算。谢谢你的澄清。如果你不介意的话,再问一个问题,假设我换成了运算符,例如:“2+2”+3*4,是否需要执行任何算术?”2+2”+3*4会给你2+212,因为首先计算了运算*谢谢你的帮助。在这个网站上问问题让我很紧张,因为它看起来很有敌意。谢谢,非常感谢!我投票重新打开这个问题,因为1)这是(国际海事组织)一个有用且合法的问题(编辑后),2)它被用作dup目标,3)有更多有用的东西可以回答。