双引号在Java中意味着什么?
我有:
"2 + 2" + 3 + 4
"hello 34" + 2 * 4
有人可以解释如何评估这些表达式吗?
答案 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中有两个含义。
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-在这种情况下,这表示任何整数或浮点基元类型,或任何匹配的包装器类型。完整的集合是""
,... + ""
,byte
,short
,char
,int
,long
,{{1} },float
,double
,java.lang.Byte
,java.lang.Short
,java.lang.Character
和java.lang.Integer
。