写在前面:如果变量是基本数据类型,此时赋值的是变量所保存的数据值
如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值
Java中,引用数据类型定义的变量含有的值,不是null就是地址值(不包括String)
例:
class Student
{
int age;
};
Student a = new Student();
Student b = new Student();
a.age = 1;
b = a;// a与b指向同一个地址值,因为a与b是由Student定义的
b.age = 2;//a与b的age同时修改
//*************************
b.age = a.age;
b.age = 2; //此时只有b改变 a与b为分开的地址值
//*************************
String类型:
String a = new String();
String b = new String();
a = "name";
b = a;
System.out.println(a+" "+b);
b = "score";
System.out.println(a+" "+b);
这时b与a的值不掺和。
//测试内存分配代码**********************
public class memtext {
public static void main(String[] args) {
memtext test = new memtext();
}
public void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v,i);
System.out.println(v.i);
}
public void second(Value v,int i) {
i=0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
class Value{
int i=15;
}
图例: