-1

ふと妙な疑問を抱く..

かどうか知りたい

if(a && b) {
}

と同じです

if(a) {
  if(b) {
  }
}

か否か..

両方のケースで同じ結果が得られました。しかし、私のプロジェクトで最初の方法を使用するのはまだ快適ではありません。

何か役に立ちますか??

4

8 に答える 8

2

If-else ステートメントを使用している場合、条件が true の場合にのみループが実行されます:---

if(condition){
//execute when it is true
}

あなたの場合、AND OPERATORで2つの変数aとbを使用しています。のプロパティはAND OPERATOR、値を与えるすべてが true の場合は true を返し、それ以外の場合は false です。

あなたの方法を使用したい場合は、

/*
check for your in a and b
both are true
*/
 then your method will be execdute

 if(a && b) {
 //if a and b both return true(a=true,b=true)
 }
于 2013-07-19T09:06:37.790 に答える
1

同じです。最初のケースでは、最初の条件が false を返す場合、コンパイラは 2 番目の条件が実行されないことを保証します。

于 2013-07-19T08:58:59.863 に答える
1

はい、機能に関する限り、それらは同じです。&&短絡演算子です。したがって、 in はa && bbが に評価される場合にのみa評価されtrueます。

ネストされifた場合も同様です。innerifは、outerifが に評価された場合にのみ実行されtrueます。ただし、との両方が.abtrue

ただし、1 つの違いは、ネストされた開始前にその機能を追加することで、2番目a = trueのケースで、の機能を実装できることです。しかし、あなたはそれを1日で行うことはできませb = falseif

于 2013-07-19T08:58:25.907 に答える
0

a && baif is tue and so is を意味するのでb、そう:

if(a && b) {
}

a && bif 本体が実行される場合にのみ、優柔不断の余地はありません。

if(a) {
  if(b) {
  }
}

の場合は、しばらくa考えずに行動する余地があります。bしたがって、チェックする前にいくつかのアクションを実行したい場合は、実行bできます。

いつでも何もする必要がない場合a、2つは同等であり、私見では、最初の方が読みやすいため優先されます。

于 2013-07-19T08:59:53.040 に答える
0

多くの人が私の前に述べたように、それらは技術的に同等です(短絡のセマンティクスに至るまで)。

しかし、 && 演算子はどのような状況でも好まれ、好みの問題ではありません。ネストされた if は、制御ステートメント以外の日常的なコードでは読みにくく、エラーの余地が大きくなります。

ほとんどの場合、「次のブロックはbが true の場合にのみ実行されます」if(b)という通信 が原因です。

しかし、それは起こりません!ブロックは、a と bが trueの場合にのみ実行されます(これはまさに、最初のメソッドがかなりエレガントに伝えていることです)。意図せずにコンテキストから引き出してif(a)(どの IDE にもコードをシャッフルする方法がたくさんあります)、バグを作成するのは非常に簡単です。

ネストされた if は、後で恐ろしいコードを作成する余地も残します。内側と外側の間にコードを挟み込むと、特に a と b が複雑な式の場合、どのコードがいつ実行されるかを理解するのが難しくなります。そして、誰かがいくつかのelseステートメントを投げ込むことにしたとき、物事は本当に厄介になります.. :-) 単一の&&演算子でその混乱に陥る方法はまったくありません。

この「柔軟性」が2番目の方法を使用する理由であると主張する人もいるかもしれませんが、明示的な条件を使用してきれいに書き直す方法はほとんど常にあると私は主張します。脳のすべてのサイクルを制御ロジックに費やさなくても、コーディングは十分に困難です。

結論: すべての Java プログラマーは、条件付き AND 演算子のセマンティクスを理解しています。独自の同等物をローリングする代わりに、組み込みの言語構造に依存することは、保守性と正確性に大いに役立ちます。

お役に立てれば。

于 2013-07-19T10:02:35.700 に答える
0

両方の条件は最初の条件と同じです: 、演算子if(a && b){ }でチェックしているため、 inはtrue と評価された場合にのみ評価されます。&&a && bba

一方、2番目のケースでは、まずa外側のif条件の値をチェックし、それが満たされる場合bは内側のif条件の値をチェックします。

しかし、最初のものがより好ましいです。

于 2013-07-19T09:00:30.087 に答える
0

はい、それは同じことです。オペレーターは、両方の&&条件が真かどうかをチェックします。ifそのようにステートメントをネストすると、2 番目のステートメントは最初のステートメントが true である場合にのみチェックされるため、同じことになります。atrueであることを含むが、そうではない何かを行う必要がある場合にのみ、それらを分離してくださいb

于 2013-07-19T09:01:09.483 に答える
0

どちらの場合も、単なる短絡です。

ここで、2 番目の引数は、最初の引数が式の値を決定するのに十分でない場合にのみ実行または評価されます。

短絡式 x Sand y (短絡の種類を示すために Sand を使用) は、条件式 if x then y else false と同等です。式 x Sor y は、if x then true else y と同等です。

構文に来て、if(a && b)コードを美しくし、読みやすくする最初のこと ( )。

于 2013-07-19T09:03:49.977 に答える