Javaのif
ステートメントを短い形式で書く方法があることを私は知っています。
if (city.getName() != null) {
name = city.getName();
} else {
name="N/A";
}
上の5行の短縮形を1行に書く方法を知っている人はいますか?
三項演算子を使用します。
name = ((city.getName() == null) ? "N/A" : city.getName());
逆の条件があると思います - nullの場合は、値を "N/A"にします.
市がnullの場合はどうなりますか?その場合、あなたのコード*がベッドに衝突します。もう1つ小切手を追加します。
name = ((city == null) || (city.getName() == null) ? "N/A" : city.getName());
その方法は三項演算子を使うことです。
name = city.getName() == null ? city.getName() : "N/A"
しかし、私はあなたが上記のあなたのコードにタイプミスがあると信じています、そしてあなたは言うことを意味します:
if (city.getName() != null) ...
.getName()
を2回呼び出さないようにするために、
name = city.getName();
if (name == null) name = "N/A";
は? :Javaの演算子
Javaでは、次のように書くかもしれません。
if (a > b) {
max = a;
}
else {
max = b;
}
単一の条件に基づいて単一の変数を2つの状態のうちの1つに設定することは、if-elseの一般的な使い方であり、ショートカットが考案されている、条件付き演算子、?:。条件演算子を使用すると、上記の例を次のように1行に書き換えることができます。
max = (a > b) ? a : b;
(a> b) a:b; aまたはbの2つの値のうちの1つを返す式です。条件(a> b)がテストされます。 trueの場合、最初の値aが返されます。偽の場合は、2番目の値bが返されます。どちらの値が返されても、条件付きテストに依存します(a> b)。条件はブール値を返す任意の式にすることができます。
私はいつも?:
三項演算子 の使い方を忘れています。この補足的な答えはちょっとしたメモです。 if-then-else
の省略形です。
myVariable = (testCondition) ? someValue : anotherValue;
どこで
()
はif
を保持します?
はthen
を意味します:
はelse
を意味しますそれはと同じです
if (testCondition) {
myVariable = someValue;
} else {
myVariable = anotherValue;
}
java 8では:
name = Optional.ofNullable(city.getName()).orElse("N/A")
if, else if, else
ステートメントは短い形式で書くことができます。例えば:
Boolean isCapital = city.isCapital(); //Object Boolean (not boolean)
String isCapitalName = isCapital == null ? "" : isCapital ? "Capital" : "City";
これは以下の短縮形です。
Boolean isCapital = city.isCapital();
String isCapitalName;
if(isCapital == null) {
isCapitalName = "";
} else if(isCapital) {
isCapitalName = "Capital";
} else {
isCapitalName = "City";
}
name = (city.getName() != null) ? city.getName() : "N/A";
name = ( (city.getName() == null)? "N/A" : city.getName() );
最初に条件(city.getName() == null)
がチェックされます。もしそうであれば、"N/A"
がnameに割り当てられるか、単にname="N/A"
が割り当てられるか、そうでなければcity.getName()
からの値がname、すなわちname=city.getName()
に割り当てられる。
ここで見ておくべきこと:
(city.getName() == null)?
を書きます。ここで疑問符は条件の直後にあります。見やすい/読む/でも推測できる!:
)とコロンの右側の値(a)コロンの左側の値は、条件が真の場合に割り当てられ、それ以外の場合はコロンの右側の値が変数に割り当てられます。これが1行のコードです
name = (city.getName() != null) ? city.getName() : "N/A";
これがどのように動作するかの例です、jsファイルのコードの下で実行し、結果を理解します。この("Data" != null)
は通常のif()
と同じように条件であり、"Data"
はこの条件が真になったときのステートメントです。この" : "
はelseとして機能し、"N/A"
はelse条件のステートメントです。これがあなたが論理を理解するのに役立つことを願っています。
name = ("Data" != null) ? "Data" : "N/A";
console.log(name);
Org.Apache.commons.lang3.StringUtilsを使用してください。
name = StringUtils.defaultString(city.getName(), "N/A");
単純明快:
String manType = hasMoney() ? "rich" : "poor";
ロングバージョン:
String manType;
if (hasMoney()) {
manType = "rich";
} else {
manType = "poor";
}
または他のコードリーダーにとって明確にするためにどのように使用していますか。
String manType = "poor";
if (hasMoney())
manType = "rich";
角カッコと改行は削除できます。
if (city.getName() != null) name = city.getName(); else name = "N/A";
Javaでは?:演算子を使用できます。
構文:
Variable = Condition ? BlockTrue : BlockElse;
だからあなたのコードではあなたはこのようにすることができます:
name = city.getName() == null ? "N/A" : city.getName();
Booleanの条件結果を代入する
boolean hasName = city.getName() != null;
EXTRA: 好奇心旺盛の場合
Java
のようなGroovy
に基づくいくつかの言語では、この構文を使うことができます。
name = city.getName() ?: "N/A";
これをGroovy
で行うことができます。あなたがこの条件を要求するのであれば、
if (city.getName()) {
//returns true if city.getName() != null
} else {
//returns false if city.getName() == null
}
そのため、演算子?:
は、条件から返された値を代入します。この場合、city.getName()
の値はnull
ではない場合。
Javaでは三項演算子を使用できます。
構文:
Condition ? Block 1 : Block 2
だからあなたのコードではあなたはこのようにすることができます、
name = ((city.getName() == null) ? "N/A" : city.getName());
詳細については this リソースを参照できます。