三目演算子bug?そうだったのか!

2376 ワード

コード1:
String name0 = null;
Integer isDisplay0 = null;
System.out.println("Integer  :"+isDisplay0 == null?"":isDisplay0+"---I");
System.out.println("String  :"+name0 == null?"":name0+"---S");

出力:
null---I
null---S

コード2:
String name0 = "123";
Integer isDisplay0 = 123;
System.out.println("Integer  :"+isDisplay0 == null?"":isDisplay0+"---I");
System.out.println("String  :"+name0 == null?"":name0+"---S");

出力2:
123---I
123---S
      ,     ,                  ?,,,,

実際:演算子の優先度の問題です!+優先度が==より高いので、+演算を先に行い、==演算"Integer :"+isDisplay0 == null?"":isDisplay0

("Integer :"+isDisplay0 )== null?"":isDisplay0
であるため、前の文字列がブロックされていることが明らかになった.皮肉なことに君の基礎を取ったらどうだ.