Java 7在调试消息中放置空字符串的行为看起来很奇怪
我注意到了一些奇怪的行为,至少对我来说是这样 输出不正确:Java 7在调试消息中放置空字符串的行为看起来很奇怪,java,debugging,Java,Debugging,我注意到了一些奇怪的行为,至少对我来说是这样 输出不正确: public static void main(String[] args) { while(count < 3) { System.out.println("Count: " + count); System.out.println("" +(count*2)+1); count++; } }
public static void main(String[] args)
{
while(count < 3)
{
System.out.println("Count: " + count);
System.out.println("" +(count*2)+1);
count++;
}
}
Count: 1
3
Count: 2
5
鉴于本计划:
public static void main(String[] args)
{
while(count < 3)
{
System.out.println("Count: " + count);
System.out.println((count*2)+1 + "");
count++;
}
}
我的问题是,当您将空字符串(
”
)放在算术表达式前面时,Java 7是否做了一些特殊的事情,而当空字符串跟在该算术表达式后面时,Java 7不会做这些事情?操作符有两种含义。number+number
表示加法<代码>字符串+任何内容表示字符串连接
+
运算符是左关联的。因此,
“+a+b”
被解析为(“+a)+b
,+
运算符有两种含义。number+number
表示添加;string+anything
表示字符串串联
+
运算符是左关联的。因此,
“+a+b”
被解析为(“+a)+b
括号有问题
("" +(count*2)) + 1
及
不一样。括号有问题
("" +(count*2)) + 1
及
不一样。是的,我明白。然而,这并不能解释为什么字符串+数字产生的输出与数字+字符串不同,至少对我来说是这样,因为在第一种情况下,它创建一个字符串,然后向其中添加两个数字,而在第二种情况下,两个数的和产生一个数字,然后转换为字符串。是的,我理解这一点。然而,这并不能解释为什么字符串+数字产生的输出与数字+字符串不同,至少对我来说是这样,因为在第一种情况下,它创建一个字符串,然后向其中添加两个数字,而在第二种情况下,两个数字之和产生一个数字,然后转换为字符串。类似的难题是
System.out.println(“test is null是”+text==null);
打印false
即使text
是null
系统输出.println(“test is null是”+text==null);打印false
即使text
是null
(count*2 + 1) + ""