一段关于对象引用的形象解释
2008-11-03 14:52
316 查看
我们先看一段代码
class Dog ...{
String name;
public static void main(String[] args) ...{
// 我知道这段代码就是让d指向了堆中的Dog对象,但书里说smalldog也指向了堆中的同一个Dog对象
Dog d = new Dog();
d.go(d);
}
void go(Dog smalldog) ...{
// 是这里让smalldog也指向了Dog对象吗?明明没有等号嘛,谁能解析一下吗?
// 没有等号也能让smalldog指向Dog对象?我很笨的
smalldog.setName("wangcai");
}
void setName(String dogname) ...{
name = dogname;
}
}
引用变量d
引用变量smalldog
smalldog=d
那么smalldog也指向d所指向的对象,是吗?那么我的这个推理,这个推理该用什么理论来解释呢,或者定义什么的,谁让我消化消化啊
我的解释:
1 Dog 是一致狗
2 我再一张纸上写了他的地址,从这个地址肯定能找到它。 这张纸叫d
3 我朋友也想看看这个狗,我就又写了一张纸,一次性使用的,上面写的相同的地址,这张纸叫 smalldog
4 我朋友根据smalldog的地址,找到了狗,并给狗改了名字 setName();
5 我朋友离开了,那个smalldog 纸片也就自动销毁了(smalldog 是一个函数变量)
6 可是,我的那张纸d, 上面依然写着那个狗的地址
7 请注意,我的纸 和 我朋友的纸是完全不同的2张纸,但是他们上面写的狗的地址是相同的。
个人理解,引用就是复制了一份地址。
class Dog ...{
String name;
public static void main(String[] args) ...{
// 我知道这段代码就是让d指向了堆中的Dog对象,但书里说smalldog也指向了堆中的同一个Dog对象
Dog d = new Dog();
d.go(d);
}
void go(Dog smalldog) ...{
// 是这里让smalldog也指向了Dog对象吗?明明没有等号嘛,谁能解析一下吗?
// 没有等号也能让smalldog指向Dog对象?我很笨的
smalldog.setName("wangcai");
}
void setName(String dogname) ...{
name = dogname;
}
}
引用变量d
引用变量smalldog
smalldog=d
那么smalldog也指向d所指向的对象,是吗?那么我的这个推理,这个推理该用什么理论来解释呢,或者定义什么的,谁让我消化消化啊
我的解释:
1 Dog 是一致狗
2 我再一张纸上写了他的地址,从这个地址肯定能找到它。 这张纸叫d
3 我朋友也想看看这个狗,我就又写了一张纸,一次性使用的,上面写的相同的地址,这张纸叫 smalldog
4 我朋友根据smalldog的地址,找到了狗,并给狗改了名字 setName();
5 我朋友离开了,那个smalldog 纸片也就自动销毁了(smalldog 是一个函数变量)
6 可是,我的那张纸d, 上面依然写着那个狗的地址
7 请注意,我的纸 和 我朋友的纸是完全不同的2张纸,但是他们上面写的狗的地址是相同的。
个人理解,引用就是复制了一份地址。
相关文章推荐
- (转)一段关于对象引用的形象解释
- 一段关于对象引用的形象解释
- Java 关于多态中,父类引用子类对象中的“引用”解释,释义
- 关于字符串对象的引用
- 关于java中数组也是对象的强悍解释
- 解释一段java关于同步锁synchronized代码的结果
- 关于引用变量的生命周期如何影响对象的生命周期
- 关于未将对象引用设置到对象实例简单原理分析,与解决方法
- 关于对象引用的一个例子
- 关于js对象引用的小例子
- 对象本无名-关于引用
- 关于网关、DNS、DHCP、路由表、ARP表等的形象解释说明
- 关于Java对象在内存中的状态和对象的引用的类型
- 关于C中函数参数,指针-常量-引用解释的4个函数例子
- 由无名对象(临时对象)引发的关于“引用”的思考
- 关于System.Web.Caching的“未将对象引用设置到对象的实例”错误
- 形象解释DC、绘图编制过程以及各个对象、SelectObject()、DeleteObject()
- java学习心得:关于对象与引用变量的关系的理解
- 关于FastJson的一些问题的处理(时间问题 ,转换json重用对象引用问)
- 对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制