有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在调试消息中放置空字符串调试Java 7看似奇怪的行为

我注意到了一些奇怪的行为,至少对我来说是这样

输出不正确:

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

我的问题是,当您将空字符串""放在算术表达式的前面时,Java7是否做了一些特殊的事情,而当空字符串跟在该算术表达式后面时,它不会做这些事情


共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

    括号有问题

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

    (count*2 + 1) + ""
    

    它们不一样