測試對象的相等性:雖然==和!=能用於所有對象,但得出的結果卻未必是你想要的。除了未經處理資料類型外,
==和!=用在兩個對象間都比較的是兩個對象的reference,而我們一般要比較的卻是對象的內容,我們可以
使用equals()方法,但該方法在object基類預設行為還是比較對象的reference,所以在比較自己建立的類的對象
時,應該自己實現該方法。好在絕大多數java類庫的類都實現了該方法,我們只管用就好了。
短接,位元運算符,移位元運算符,三元運算子( ? :),逗號運算子(java裡只有在FOR迴圈裡有應用),string
的+運算子(自動轉換後相加)。
常見的使用運算子中的錯誤:while( x = y) {//do something},哦,在c++裡會不小心犯的錯誤,java裡卻不會
出現,因為java裡的boolean 是false和true,而不是0 和非0;
類型轉換:寬位值轉換為窄位值時,java要求你進行明確的顯示轉換否則產生異常,因此避免了意外出錯。
java沒有sizeof(),曾經在《c++高品質編程》裡被大段講過的東西終於一下子被哢喳了,真爽。
控制語句:if else; for ; while ; do while; for (只有for語句才有在“控製表達式”裡定義變數的能力,千萬別在
其他選擇語句或迴圈語句裡這麼做。雖然可以定義變數,但也只能是同一個類型而已); break (跳出當前迴圈)
; continue(立即進入下一輪迴圈); while(true)==for(;;) ; switch case;
goto後來者:C++程式員在編程時因為擔心goto的副作用,都很謹慎的使用它,或者乾脆不用,但有時它也會有
很好的效果在適當的地方,(不過我至今還沒用到)java終於摒棄了這把雙刃劍,同時提供了另一個類似的功能
的東東,以便能在適當的地方起些適當的作用。label.
///////////////////////////////
label1:
outer-iteration
{
inner-iteration
{
//......
break; //案例1
//......
continue; //案例2
//......
continue label1; //案例3
//......
break label1; //案例4
//......
}
}
/////////////////////////////////
在案例1中break中斷了內部迴圈,退到了外部迴圈。案例2中continue仍在內部迴圈。案例3中continue到label1
處,重新開始迴圈。案例4退到label1處,但是這次再不進入迴圈了(不可思議)。
以上規則同樣適用於while迴圈。
ok,今天到這裡,明天學習隱藏實現,對象的初始化和清理。