Java 7在调试消息中放置空字符串似乎很奇怪

时间:2012-12-26 18:35:34

标签: java debugging

我注意到奇怪的行为,至少对我来说,在我的程序中。

输出错误:

public static void main(String[] args)
    {
        while(count < 3)
        {
            System.out.println("Count: " + count);
            System.out.println("" +(count*2)+1);
            count++;
        }
    }

产生以下印刷声明:

Count: 1
21
Count: 2
41

这个程序:

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

我的问题是,当你将空字符串""放在算术表达式的前面时,Java 7会做一些特殊的事情,当空字符串跟在那个算术表达式之后它不会这样做吗?

2 个答案:

答案 0 :(得分:10)

+运算符有两个含义 number + number表示添加; string + anything表示字符串连接。

+运算符是左关联的 因此,"" + a + b"被解析为("" + a) + b

答案 1 :(得分:2)

括号有问题。

("" +(count*2)) + 1

(count*2 + 1) + ""

不一样。