Java表达式中的双引号是什么意思?
双引号在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
"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)有更多有用的东西可以回答。