国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

短路運算符:提高性能和簡化代碼

2019-11-18 15:06:26
字體:
來源:轉載
供稿:網友

  NullPointerException大概是最常見的RuntimeException。大量的開發工作花在嘗試發現對象是否被賦值上,僅僅是為了檢查它是否是null的。要解決這個問題,可以用一個if-null塊來保護你的代碼。例如:

if(obj != null) {
str = obj.toString( );
}
但是,當被保護的塊象下面這樣的時候,是有問題的:

if(obj.equals(newobj))
{
....
}
加上保護用的if-null塊會變成這樣:

if(obj != null) {
if(obj.equals(newobj)) {
....
}
}
當嵌套if塊來處理null保護時顯得很凌亂,這時可以試一下使用短路運算符。例如布爾“與”運算符,“&&”:

if((obj != null) && obj.equals(newobj) ) {
...
}
“短路”意味著運算符只對必要的部分求值,而不是整個表達式。假如變量“obj”等于null,就不會嘗試對“obj.equals(newobj)”子句求值。這就對潛在的NullPointerException提供了保護。

布爾“或”運算符“”也有同樣的特性,但它的用法和“與”短路運算相反。它不是當前面的子句取假值時提前中止求值,而是當前面的子句取真值時這樣做。例如:

if((number==9) (doAnalysis(number) 〈 20) ) {
....
}
在上面的代碼片斷中,假如number等于9,它會中止if子句并且不會執行doAnalysis方法。雖然知道這一點很有用,但很可能你在不知道的情況下已經這樣做了。

使用“或”短路運算符要注重的最重要的方面,是要確保你按照子句取真值的復雜性和可能性的順序來排列它們。考慮下面三個子句:

A: 70%的情況下為真
B: 10%的情況下為真,但求值很耗時
C: 5%的情況下為真,但很輕易求值
排列if語句來避免不必要的工作:

if( A C B ) {
...
}
開發者善于利用短路運算符可以提高性能且簡化代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兴业县| 安西县| 屏东县| 西乌珠穆沁旗| 辽中县| 金门县| 巢湖市| 涞水县| 西贡区| 思南县| 家居| 榆社县| 五常市| 梅河口市| 华阴市| 旬邑县| 临沂市| 陵川县| 长阳| 汉寿县| 香港 | 宿松县| 朝阳区| 崇州市| 屏南县| 读书| 鹤岗市| 兴宁市| 合作市| 仙居县| 开江县| 涿州市| 休宁县| 上蔡县| 苏尼特右旗| 永修县| 丽江市| 司法| 天水市| 长乐市| 建昌县|