如何理解Java中基本数据类型不可变?
这个是这样的吧,基本数据类型的数据作为参数传递时不会影响原来数据的值。以函数例子说明:
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函数中输出的i还是=0;无论在change中怎样改变i的值,在main函数中调用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函数中重新打印System.out.println(j.getNum());的值就由0变成5了。
所以说引用型变量是可变型变量,基本类型是不可变的,还有一个特殊的string
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有