【Java核心技術卷】深入理解Java資料型別、變數 (擴充套件講解,結合
一,資料型別
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java資料型別擴充套件Java資料型別套件
- 《Java核心技術 卷I》學習筆記2:資料型別、變數與常量Java筆記資料型別變數
- 深入理解 Java 基本資料型別Java資料型別
- [JAVA] Java 變數、表示式和資料型別詳解Java變數資料型別
- Java技術分享:Java基本資料型別Java資料型別
- XML - Schema之資料型別擴充套件XML資料型別套件
- Java檢視變數資料型別Java變數資料型別
- Java管理擴充套件指南之JMX技術總覽Java套件
- 數值的擴充套件方法以及新增資料型別BigInt套件資料型別
- 《Java核心技術面試精講》27講學習總結Java面試
- ES6各大資料型別的擴充套件大資料資料型別套件
- Java基礎:Java變數、資料型別、運算子(2)Java變數資料型別
- Java 變數型別Java變數型別
- JAVA-識別符號、變數、資料型別Java符號變數資料型別
- Java雜記1—資料型別和變數Java資料型別變數
- 前端進階(11) – js 資料結構型別擴充套件:immutable-js前端JS資料結構型別套件
- Java基礎擴充套件1.資料輸入Java套件
- Java第三天【變數、常量、資料型別】Java變數資料型別
- 譯 - Spring 核心技術之 Spring 容器擴充套件點Spring套件
- 強型別語言變數和資料型別的理解變數資料型別
- 深入理解ES6 ---- 正則擴充套件套件
- 深入理解Spring IOC容器及擴充套件Spring套件
- Java基礎知識(變數、資料型別、運算子)Java變數資料型別
- 《Java核心技術(卷1)》筆記:第8章 泛型程式設計Java筆記泛型程式設計
- (interbase之七) 使用域擴充套件interbase的資料型別 (轉)套件資料型別
- Java 核心技術卷 I (第 10 版,基於 java8) 第一二章總結Java
- GBASE觀察:擴充套件分析型資料庫套件資料庫
- Java 缺失的特性:擴充套件方法Java套件
- javax.mail Java Extension(擴充套件)JavaAI套件
- Java-IoUtil擴充套件工具類Java套件
- Oracle行資料擴充套件方法總結Oracle套件
- 深入理解redis資料型別Redis資料型別
- Solidity-變數和資料型別[複合型別_1]Solid變數資料型別
- Java整型資料型別(詳解)Java資料型別
- Java小白進階筆記(2)-變數和資料型別Java筆記變數資料型別
- 擴充套件邏輯卷空間套件
- Linux擴充套件邏輯卷Linux套件
- 深入理解 Java 泛型Java泛型