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) + ""