在Java中,變量可以分為值類型和引用類型兩種。
值類型變量保存值本身,而引用類型變量保存的是一個指向內存中對象的地址。
// 定義兩個值類型變量 int a = 10; double b = 3.14; // 定義一個引用類型變量 String str = "Hello World!";
在Java中,值類型變量在聲明的同時就會被初始化,因為它們保存的是值本身,所以不存在空指針的問題。
而引用類型變量需要通過new關鍵字來創建對象,并且如果沒有賦值,它們的默認值是null,意味著它們指向的是一個不存在的對象。
// 定義一個空的引用類型變量 Object obj = null; // 創建一個對象,并將引用類型變量指向它 obj = new Object();
此外,對于值類型變量,它們之間的賦值是直接將值賦給另一個變量,而對于引用類型變量,它們之間的賦值是將一個變量指向的對象的地址賦給另一個變量。
// 定義兩個值類型變量 int a = 10; int b = a; // 直接將a的值賦給b // 定義兩個引用類型變量 String str1 = "Hello"; String str2 = str1; // 將str1指向的對象地址賦給str2
需要注意的是,對于引用類型變量,它們指向的對象可以被多個變量共享,因此對于一個引用類型變量所指向的對象的修改,會影響到所有共享該對象的變量。
// 定義一個List對象,兩個引用類型變量共享它 List<String> list = new ArrayList<>(); List<String> list2 = list; // 向list中添加元素 list.add("Hello"); System.out.println(list2.get(0)); // 輸出"Hello"
以上就是Java中值類型和引用類型的區別,了解這些對于理解Java程序的運行機制很有幫助。