println不会打印预期值

Sur*_*nga 7 java concatenation conditional-operator println

这是我的代码:

public static void main(String[] arg)
{

    String x = null;
    String y = "10";
    String z = "20";

    System.out.println("This my first out put "+x==null?y:z);

    x = "15";

    System.out.println("This my second out put "+x==null?y:z);

}
Run Code Online (Sandbox Code Playgroud)

我的输出是:

20
20
Run Code Online (Sandbox Code Playgroud)

但我期待这个:

This my first out put 10
This my second out put 20
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么我得到"20"作为两个println调用的输出?

Rav*_*avi 9

System.out.println("This my first out put "+x==null?y:z); 将被执行如

("This my first out put "+x)==null?y:z这永远不会成真.所以,它会显示z价值.

例如:

int x=10;
int y=20;
System.out.println(" "+x+y); //display 1020
System.out.println(x+y+" "); //display 30
Run Code Online (Sandbox Code Playgroud)

对于上述情况,操作从左到右执行.

正如你说的那样,你期待这样:

This my first output 10
Run Code Online (Sandbox Code Playgroud)

为此,您需要对代码进行少量更改.试试这个

System.out.println("This my first output " + ((x == null) ? y : z));