Java是一門面向對象編程語言,建立在JVM(Java Virtual Machine)之上。Java 中的數據類型分為兩種:基本數據類型和引用數據類型。基本數據類型(Primitive data type)直接存儲的是數值,引用數據類型(Reference data type)存儲的是地址。在本文中,我們將會深入了解Java引用數據類型。
一、什麼是引用數據類型?
Java引用數據類型是指一種存儲在堆中的對象。Java引用類型其實是一種變量類型,它不同於基本數據類型,它的值並不是原始的值,而是一個指向堆內存中實際對象地址的引用。我們可以將它們看作是「指向對象的內存地址」。
在Java中,每個引用數據類型都有對應的類,它封裝了數據和方法。Java中的8種基本數據類型,分別是:
- byte
- short
- int
- long
- float
- double
- char
- boolean
引用數據類型有8種基本類型之外還有很多,如String、List、Map等。這些數據類型在Java中被稱為對象,每個對象都擁有自己的生命周期和其它特定的屬性。
二、創建引用數據類型
創建Java引用數據類型的過程包括創建、實例化和初始化。創建一個Java對象的代碼示例如下:
//創建一個Person類的對象,並實例化 Person person = new Person(); //對象初始化 person.setName("張三"); person.setAge(20);
在以上代碼中,我們創建了一個名為person的Person類的對象。使用關鍵字new創建新的Person對象,實例化該對象,從而獲取了一個指向堆內存中實際對象地址的引用。使用該引用,我們可以調用相應的方法或屬性,對該對象進行操作。
三、Java中的引用數據類型和傳值的區別
對於基本數據類型,Java是按值傳遞的。也就是說,當一個基本數據類型的值(byte、short、int、long、float、double、char、boolean)被傳遞給一個方法時,傳遞給方法的是該值的副本。如果在方法內更改副本的值,不會影響原始值。
然而,對於Java中的引用數據類型,情況是不同的。當一個引用數據類型被傳遞給一個方法時,傳遞給方法的是該對象的引用,而不是對象本身。這意味着,如果在方法中更改該對象,原始對象也會發生更改。例如:
//定義一個Person類 class Person { private String name; private int age; //構造函數 public Person(String name, int age) { this.name = name; this.age = age; } //獲取名稱 public String getName() { return name; } //獲取年齡 public int getAge() { return age; } //設置名稱 public void setName(String name) { this.name = name; } //設置年齡 public void setAge(int age) { this.age = age; } } //更改Person對象 public static void changeName(Person person) { person.setName("李四"); } //測試方法 public static void main(String[] args) { Person person = new Person("張三", 20); changeName(person); System.out.println(person.getName()); //輸出「李四」 }
在以上代碼中,我們定義了一個Person類,給該類定義了兩個屬性:名稱和年齡。我們還定義了一個方法changeName,該方法接收一個Person對象,更改對象的名稱,並在main方法中調用該方法。在main方法中打印出的對象的名稱為「李四」,而非原來的「張三」,從而證明了對象發生了改變。
四、Java中的常用引用數據類型
1. String類型
Java中的String類型是引用類型,非基本類型。String類型是不可變的,意味着我們無法更改一個String對象的值。當我們創建了一個String對象,它的內容不會被改變。
String str = "Hello"; str.concat(" World"); System.out.println(str); //輸出「Hello」
在以上代碼中,我們定義一個名為str的String對象,並調用它的concat方法,在其後添加「 World」。然而,最終我們打印出的值是「Hello」,並沒有被改變。原因是concat方法返回的是添加了另一個字符串後的新字符串,而不是更改了該原始字符串。如果我們想要更改str,需要重新賦值。
String str = "Hello"; str = str.concat(" World"); System.out.println(str); //輸出「Hello World」
2. Integer類型
Java中的Integer類型是包裝類型,像int一樣具備數字類型的特徵。Integer類的主要作用是將int類型轉換為對象類型。
int num = 100; Integer i = new Integer(num); System.out.println(i); //輸出「100」
在以上代碼中,我們創建了一個名為i的Integer對象,並將int類型的num賦值給它。我們可以調用Integer對象的方法來操作數字,例如add和subtract等方法。
3. Array類型
Java中的Array類型是一種特殊的引用類型,它用於存儲一個類型相同的值的集合。它們可以是基本類型數組,如byte、short、int、long、float、double、char、boolean或對象類型數組,如String、Person等。
int[] nums = {1, 2, 3, 4, 5}; System.out.println(nums[1]); //輸出「2」
在以上代碼中,我們創建了一個名為nums的int類型數組,並賦了初值。我們可以通過調用數組的索引來訪問數組中的單個元素。
五、總結
Java引用數據類型是Java中非常重要的一部分。Java中的引用類型包括String、Integer、Array和自定義類型等。與基本數據類型不同,引用數據類型存儲的是對象的內存地址。當我們更改一個引用類型的值時,原始對象也會被更改。在Java中,我們需要使用new關鍵字來創建引用對象,並在創建對象之後對其進行初始化。
原創文章,作者:BAFY,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/146668.html