Java面向对象中地址的理解(长期修改)

写在前面:如果变量是基本数据类型,此时赋值的是变量所保存的数据值

     如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值

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;
}

图例:

Java面向对象中地址的理解(长期修改)