如何理解Java中基本數(shù)據(jù)類型不可變?
這個是這樣的吧,基本數(shù)據(jù)類型的數(shù)據(jù)作為參數(shù)傳遞時不會影響原來數(shù)據(jù)的值。以函數(shù)例子說明:
public class main {
public static void main(String[] args){
int i=0;
change(i);
System.out.println(i);
}
public static int change(int i){
i=i+5;
return i;
}
}
在main函數(shù)中輸出的i還是=0;無論在change中怎樣改變i的值,在main函數(shù)中調(diào)用change()前后的i的值都是一樣的。但是如果傳遞的引用類型的話,會改變原來的值。再看下面的例子
public class main {
public static void main(String[] args){
int i=0;
NumberTest j=new NumberTest(i);
change(i);
changeValue(j);
System.out.println(i);
System.out.println(j.getNum());
}
public static int change(int i){
i=i+5;
return i;
}
public static int changeValue(NumberTest num){
int j=num.getNum()+5;
num.setNum(j);
return j;
}
public static class NumberTest{
private int num;
public NumberTest(int num) {
super();
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
}
changeValue()中傳入的是引用型變量NumberTest,在changeValue()中改變num的值后,在main函數(shù)中重新打印System.out.println(j.getNum());的值就由0變成5了。
所以說引用型變量是可變型變量,基本類型是不可變的,還有一個特殊的string