1.基本数据类型
public class test {
public static void main(String[] args) {
int n=1;
int m=n;
System.out.println(m);
n=2;
System.out.println(m);
}
}
输出:
1
1
2.引用数据类型
public class test {
public static void main(String[] args) {
Tmp x = new Tmp();
Tmp y = x;
x.a = 1;
System.out.println(y.a);
x.a = 2;
System.out.println(y.a);
}
}
class Tmp {
int a;
}
输出:
1
2
由此可见,基本数据类型的变量,修改其中一个变量的值,另一个变量不变;而引用数据类型可以做到这一点。
下面来分析两种变量赋值时的内存机制
基本数据类型:
声明局部变量后,存入内存的栈中,两变量的值互不影响
引用数据类型:
首先我们要明白局部变量分配在栈中,而对象分配在堆中,当两个引用数据类型赋值时,是按地址值传递的,栈中的局部变量存储同一个地址,指向堆中的对象,其中一者修改值,另外一个随之修改