【Java核心技術卷】深入理解Java資料型別、變數 (擴充套件講解,結合

nt1979發表於2021-09-09

一,資料型別

Java程式的執行無非就是

1)生成資料結構:

  • 棧資料結構由作業系統建立
  • 類的資料結構由JVM決定
  • 基本型別的資料結構由JVM決定
  • 引用型別的例項結構在程式執行時生成,由類定義決定

這個不多解釋

2)獲取資料結構的入口地址

注意這點很重要,尤其是字串,
Java中的String型別是不可改變字串,所謂的不可改變就是,一旦你對它賦值以後,它的值就不會再發生變化。
例:
String a= “abc”;//a = "abc"
a = a+“def”;// a = “abcdef"嗎???
你以為a的值已經發生了改變,但其實不是這樣的,實際上Java虛擬機器是重新開闢了一個記憶體,用來儲存字串"abcdef”,這時候a指向了新生成的字串,其中a是獲取這個資料結構的入口地址,而"abc"在記憶體中還是存在的,這就是不可改變的含義,這個字串一旦生成,它的值就不會發生變化。
想要改變a指向的值?不可能但是卻有別的方法,比如:
圖片描述
這裡對"lalala"這個字串 取了前四位lala,然後與"houhou"字串拼接在一起,將a的引用指向新的字串 a就能訪問它了

3)獲取資料結構中的成員
4)運算元據結構中的欄位成員(資料)

3 和 4 在2中的例子都有體現

5)呼叫資料結構中的成員方法

這個與類相關 很好理解


二,基後設資料型別 和 非基後設資料型別

語言中的資料型別本質上是定義了一種資料結構 : 資料型別 ------〉資料結構

基後設資料型別 和 JVM的核心資料型別 遮蔽了與硬體相關的物理實現。

在程式設計時,一定要選擇資料結構。
程式設計者一定要具有選擇資料結構的能力。

這也是學好資料結構的關鍵組成部分

選擇資料結構的因素:
圖片描述
這些都很基礎,都要很清晰的認識!

資料型別分類:
圖片描述

補充:C和Java中很重要的基元型別是 陣列 和浮點型

Java資料型別:
圖片描述
這張圖融合了所有程式語言的資料型別,對號是Java擁有的 叉號是Java沒有的 可以思考一下

這裡有PDF版本的:連結: 提取碼:4b26

值型別和引用型別的選擇:
a、儲存空間
b、修改效率

值型別就是基本資料型別(如int ,double 等),而引用型別,是指除了基本的變數型別之外的所有型別(如透過 class 定義的型別)。
所有的型別在記憶體中都會分配一定的儲存空間(形參在使用的時候也會分配儲存空間,方法呼叫完成之後,這塊儲存空間自動消失), 基本的變數型別只有一塊儲存空間(分配在stack中), 而引用型別有兩塊儲存空間(一塊在stack中,一塊在heap中)
圖片描述

由於棧空間很小,容易棧溢位,值型別的例項一般存放在棧中;
而且方法修改的是值型別資料副本,需要複製,影響效率;
所以值型別的設計不能太大(一般<= 16位元組)。
引用型別也是在棧中哦! 注意引用型別可以引用堆中的例項
堆空間比較大,記憶體不容易溢位,引用型別的例項一定存放在堆中;
方法修改引用型別的例項不必需要副本,可以直接修改堆中的例項,效率較高;
所以引用型別的例項可以設計的較大。

對於Java來說 二維陣列都是引用型陣列,沒有矩陣陣列,在這方面沒有選擇的餘地,雖然降低了靈活性,但是提高了訪問與操作的效率.

三,變數

同樣的錯誤:
變數未初始化
對於c語言好Java語言有所不同
C語言邏輯錯誤
Java語言語法錯誤
記住 變數名都要大寫呀!!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2824174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章