1

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

输出错误:

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 是否会做一些特殊的事情,""而当空字符串跟随该算术表达式时它不会做一些特殊的事情?

4

2 回答 2

10

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

+运算符是左结合的。
因此,"" + a + b"被解析为("" + a) + b

于 2012-12-26T18:36:40.427 回答
2

你的括号有问题。

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

(count*2 + 1) + ""

不一样。

于 2012-12-26T18:39:49.060 回答