public void printManagerAvailable(Manager mgr) {
System.out.println(" Is Manager object available : " + mgr!=null);
}
出力チェック:出力はここだけtrue
なぜ印刷対象とヌル
true
を?私は期待してい:
Is Manager object available : true
public void printManagerAvailable(Manager mgr) {
System.out.println(" Is Manager object available : " + mgr!=null);
}
出力チェック:出力はここだけtrue
なぜ印刷対象とヌル
true
を?私は期待してい:
Is Manager object available : true
を、それはあなたが" Is Manager object available : " + mgr
を言っていることはすべて!= null
の左にあると思っているので。つまり、最初に" Is Manager object available : " + mgr
を実行してから、" Is Manager object available : [Object:Manager]" != null
を比較します。
これを行う。
Manager mgr = new Manager();
mgr.setChangeClass(5);
mgr.setChangeClockIn(10);
System.out.println(" Is Manager object available : " + (mgr!=null));
このコード行を試してみてください。
System.out.println(" Is Manager object available : " + (mgr == null ? "is null" : "not null"));
彼は、マネージャオブジェクトが使用可能かどうかを判断するために、trueまたはfalseを返します。単に 'mgr!= null'をカッコで囲むだけで、そのトリックを行います。 – MakPo
その他の答えは何が起こっているかをカバーし、それが起こっている理由です:
Javaでoperator precedenceの順序は先に平等、!=
の、追加、+
を置きます。
ここでは、左から右への順序が原因ではないことに気づくことが重要です。
だから、そうのような順序での演算子を適用して持っているもの:
("Is null : " + mgr) != null
そして、あなたが優先に、他の方法で強制的にブラケットを使用することができ、それを修正する:
"Is null : " + (mgr != null)
ありがとうございます。マネージャーが初期化されると、上記のfalseを返すことは決してありません。私はちょうど例としてそれを取った。 –
@VenkataPavanさて、私はあなたの例を調整し、あなたの質問とは関係のない行を削除して、それが 'null 'になる可能性があるようにしました。 – weston
私はドン」にtを印刷したい。私はちょうどマネージャーがヌルかログで利用可能かどうかを知りたい。私はString.valueOf(mgr)を使用して、期待される出力を得ました。 msgstr "マネージャオブジェクトは使用可能か:true"。私は "System.out.println(" Managerオブジェクトが利用可能かどうか "+ mgr!= null);"を印刷するだけで、なぜ私はブール値を取得するのか理解したい。 –