Java中有兩種類型:基本類型和引用類型。基本類型(如int、double、char等)存儲的是值,而引用類型(如String、Object等)存儲的是對象引用。
int a = 5; int b = a; a = 10; System.out.println(b); // 輸出5,因為a修改后,b不受影響
基本類型的賦值是將值從一個變量復(fù)制到另一個變量,而引用類型的賦值則是復(fù)制一個對象的引用到另一個變量中,這兩個引用指向同一個對象。
String s1 = "hello"; String s2 = s1; System.out.println(s2); // 輸出hello s1 = "world"; System.out.println(s2); // 輸出hello,因為s1修改后,s2不受影響
當(dāng)調(diào)用一個方法時,方法的參數(shù)傳遞方式也分為值傳遞和引用傳遞兩種。
void changeValue(int x) { x = x + 1; } int a = 5; changeValue(a); System.out.println(a); // 輸出5,因為a的值并未被修改
在值傳遞中,傳遞給方法的參數(shù)是復(fù)制的值,對這個值的修改不會影響原來的變量。而在引用傳遞中,傳遞給方法的參數(shù)是對象的引用,對這個對象的修改會影響原來的變量。
void changeValue(String s) { s = s.toUpperCase(); } String str = "hello"; changeValue(str); System.out.println(str); // 輸出hello,因為str的引用的值并未被修改
在Java中,對象引用和值都具有重要的作用,開發(fā)者需要清楚它們的區(qū)別和應(yīng)用場景。