赋值与引用"/>
理解Java中的赋值与引用
Java对象和引用的关系可以说是互相关联,却又彼此独立。彼此独立主要表现在:引用是可以改变的,它可以指向别的对象。
从存储空间上来说,对象和引用也是独立的,它们存储在不同的地方,对象一般存储在堆中,而引用存储在速度更快的堆栈中。
引用可以指向不同的对象,对象也可以被多个引用操纵。如下面面说的date和date1都指向了同一个对象。既然两个引用指向同一个对象,那么不管使用哪个引用操纵对象,对象的内容都发生改变,并且只有一份,通过date和date1得到的内容自然也一样。
Date date1 = new Date(); 引用 这个有点向c语言的指针
Date date 对象
date =date1; //此时便是date与date1会同时改变 、
在传参中也是如此 但是在方法中出现这种情况
public class Type {
public int a;
public void test(Date d) {
d = new Date(1990);
System.out.println(d);
}
public void test1(Date d) {
d.setYear(2000);
System.out.println(d);
}
public static void main(String[] args) {
Type t = new Type();
Type t2 = new Type();
t.a=t2.a; //
Date date1 = new Date();
Date date;
date =date1; //此时便是date与date1会同时改变
t.test(date);
t.test1(date);
System.out.println(date);
}
}
结果:
Thu Jan 01 08:00:01 CST 1970
Sun Aug 19 14:59:09 CST 3900
Sun Aug 19 14:59:09 CST 3900
所以test中已经不是原来那个date了 ,已经有了新的引用 而后面test1中没有是原来赋值的date 还是会同时改变
更多推荐
理解Java中的赋值与引用
发布评论