Re: [問題] && 和 &

看板java作者 (囧rz)時間19年前 (2006/08/19 12:22), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《seekyou (galagala~￾N )》之銘言: : public class ShortCircuit { : public static void main(String[] args) { : String s=null; : if((s != null) && s.length() > 20) : System.out.println(s); : String t=null; : if((t != null) & t.length() > 20) : System.out.println(t); : } : } : 如題,第一個if不會印出東西,(短路運算子) : 第二個if為什麼會有NullPointerException呢? : 謝謝回應 兩個運算子本身的意義就不同 && 是因為是Logical的"AND", 只有左運算子為true時才會去運算右運算子, 輸出為boolean, & 是bitwise的"AND", 只能做兩邊運算子是boolean/Boolean或int/Integer 輸出看兩邊如果至少有一邊是boolean, 那就是boolean, 如果都是int, 那就是int 第一個判斷式, 意義為: 若 左運算子(s != null)的結果"和" 右運算子(s.length..)的結果 都為真, 則System.ooxx...那因為照前述, 左運算子的結果為false,整句 運算子不可能為真, 所以右運算子就不管了 第二個判斷式的意義為 "左運算子的結果"和"右運算子的結果"做bitwise的AND 所以兩個運算子一定都要得到結果才能算 compiler並不會先去檢查左運算子, 發現他是0了, 就乾脆不做AND(why?) 所以第二個在運算右運算子的時候會出事. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.209.4
文章代碼(AID): #14vf7rV2 (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):
文章代碼(AID): #14vf7rV2 (java)