1. 程式人生 > >《瘋狂Java講義》 4-流程控制與數組

《瘋狂Java講義》 4-流程控制與數組

數據結構 也有 堆內存 種類型 引用 字符串 數組長度 問題 ret

總結

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-流程控制與數組