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调用的输出?
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));
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |