實際的Java代碼:爲什麼java的恢復邏輯運算符,而編譯
((rrd == null || !rrd)
&& null != dam
&& null != dam.getac()
&& null != dam.getac().getc()
&& null != sname
&& sname.equalsIgnoreCase(dam.getac().getc()))
但是,當我看着類文件是:
((rrd != null) && (rrd.booleanValue()))
|| ((((null == dam)
|| (null == dam.getac())
|| (null == dam.getac().getc())
|| (null == sname)
|| (!(sname.equalsIgnoreCase(dam.getac().getc()))))))
所有||
和&&
互換。
任何人都可以解釋爲什麼嗎?
請問下面的問題:1)至少近似類型的rrd,dam,sname; 2)javap輸出,而不是你的反向工程版本。謝謝。 – Koshinae
由於OR操作可能會短路。第一個或者是真的使得整個邏輯運算成立。此外,你應該從不**寫出這樣令人費解的邏輯陳述。他們對於人類理解太複雜。 –
嗨Koshinae,'rrd','dam'和'sname'類型分別是'Boolean','java entity'和'String'。 –