2016-05-02 12 views
-1

他の場合は、三項演算子で文字列を連結しようとしているときにエラーが発生するのはなぜですか?3進演算子IF else Java

例えば

String varA = null; 
String concatString = "something1" + "something2" + varA == null?"":varA.toUpperCase(); 

しかし、私はこれを行うと、それが動作するようにしようとしている:

String varA = null; 
varA = varA == null?"":varA.toUpperCase(); 

答えて

1

あなたは評価の順序を強制するために、この場合には括弧を必要とします。何かのように

String concatString = "something1" + "something2" 
     + (varA == null ? "" : varA.toUpperCase()); 
+0

ごめんなさい、評価の順序を強制するのはどういう意味ですか? – user1568459

+0

[JLS-15.7.2。オペレーションの前にオペランドを評価する](http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.7.2)(部分的に)* Javaプログラミング言語は、条件演算子 '&&'、 '||'、** '?:' **)を除く演算子のすべてのオペランドは、演算自体の一部が実行される前に完全に評価されているようです。 –

関連する問題