《瘋狂Java講義》 4-流程控制與數組
總結
1、流程控制
和C++類似。
switch用的較少,留意一下:Java7後expression還可以是字符串類型。
switch與if不同,起始點非常清晰,故每個case的花括號可以省略。
break不能少,否則一旦匹配則不再判斷之後,都會輸出。
while,do while,for Java也有,而且用法一致
break,continue,return亦同。
break還可以結束外層循環,這時break後緊跟標簽(一個緊跟冒號的標識符,放在循環語句前)。continue也是。
return結束整個方法。
2、數組
2.1 Java的數組
存儲同種類型數據的一種數據結構。
註意:Java定義數組時,不能指定長度。得在初始化中指定以分配內存空間。
其中 new type[]可省略,直接與定義同時進行。
type應是定義的子類,此時初始值根據類型確定,為0或null等。
!不要同時使用靜態和動態初始化。
Java數組索引從0開始!Java數組有.length屬性,可用於循環。
該形式無需獲得數組長度。
2.2 深入數組
數組引用變量指向有效內存。
實際數組對象存儲在堆內存中,引用變量如果是局部變量,存儲在棧內存中。
定義並初始化數組後,內存中分配了兩個空間,引用變量&數組本身。故引用變量可以隨時指向同類型的其它數組,造成長度可變的假象。emmm,C++中動態數組又是什麽呢?
如果從數組底層運行機制來看,沒有多維數組,只是數組元素為引用類型。
同時初始化為0;
Java的Arrays類有很多應用於數組的方法。如equals,fill,sort,toString等,見P128.
及一些並發支持方法,如parallelSort()。
問題
1、C++的數組實現原理和Java一樣嗎,它的動態數組是怎麽實現的?
《瘋狂Java講義》 4-流程控制與數組