创建对象的过程中,需要用一个引用来寻找它的存放地址:
Object object=new Object();
其中object为一个引用,它存放了对象Object的地址;但是仅仅:
Object object; object没有任何意义,他只是表明自己是以个引用而已,却不存在任何值。
下面进入正题:
1.首先看几个程序
PrintTest printTest1=new PrintTest("1");
PrintTest printTest2=new PrintTest("2");
public void change() {
printTest1=printTest2;
printTest2.setTest("3");
printTest1.setTest("4");
printTest1.test();
printTest2.test();
}
其中PrintTest类中,通过构造函数和setTest()输入字符串,使用test()方法输出字符串。
执行change的输出结果为:
4
4
这说明,通过“=”操作,这两个引用指向了同一个内存地址,因此操作任何一个引用,都是对于同一个对象的操作。
2.第二种这情况比较别扭,是我在实际编程中遇到的一个问题:
PrintTest printTest1 = new PrintTest("1");
PrintTest printTest2 = new PrintTest("2");
ArrayList<PrintTest> pr = new
ArrayList<PrintTest>();
public void change() {
pr.add(printTest1);
printTest1 = printTest2;
printTest1.setTest("4");
pr.add(printTest2);
for (int i = 0; i < pr.size(); i++)
pr.get(i).test();
}
执行change()之后结果为:
1
4
这说明虽然句柄消失了,但是如果这个对象有用的话,这个对象是不会消亡的。
3.注意一种情况:如果将printTest1 = printTest2;变为printTest2 = printTest1;时输出的结果为:
4
4
这是因为printTest2拥有了操作前一个对象的句柄,从而导致整个泛型内的对象全部受到更改。所以在操作泛型时要注意这种情况,添加一个引用或修改一个引用时要注意使它不在指向上一个对象!!
分享到:
相关推荐
- **安全性问题**:由于对象引用可能导致多个变量指向同一对象,因此需要小心处理以避免副作用。 #### 四、深入理解String与Integer 在给定的部分内容中,提到了`String`和`Integer`类型的引用行为。 ##### 4.1 ...
1. **一个引用可以指向多个对象**: 当我们声明一个引用变量并将其指向某个对象时,可以通过这个引用变量来访问该对象的属性和方法。如果改变引用变量的指向,则原对象仍然存在,但不再被当前引用变量所访问。 ```...
Java中对象与引用对象的关系 在 Java 中,对象和引用对象的关系是一个非常重要的概念。从宏观的角度来看,对象是类的实例。例如,我们可以定义一个名为 Someone 的类,代表一些人(通过指定年龄、性别、性格等基本...
2. **对象与引用的关系**:`veh1`是一个指向`Vehicle`对象的引用,它存储了该对象的地址,而不是对象本身。 3. **对象的名称**:在内存中创建的对象并没有明确的名字,我们只能通过引用(如`veh1`)来访问它。 ###...
对象是类的一个实例,而对象引用则是用于访问该对象的一种手段。下面将详细探讨这两个概念。 #### 二、对象的创建过程 在Java中,当我们创建一个对象时,实际上是经历了几个步骤: 1. **创建对象**: `new`关键字...
### 未将对象引用设置到对象的实例问题原因 在.NET开发过程中,特别是使用ASP.NET进行Web应用程序开发时,开发者可能会遇到一个常见的异常——`System.NullReferenceException`。这一异常通常意味着试图访问一个未...
### 未将对象引用设置到对象的实例--可能出现的问题总结 在进行软件开发尤其是Web应用程序开发过程中,经常会遇到“未将对象引用设置到对象的实例”这类异常,这种异常通常表现为`System.NullReferenceException`。...
### Java中对象与对象引用的区别 #### 基础概念 在Java编程语言中,对象与对象引用是非常基础且重要的概念。理解它们之间的区别对于掌握Java面向对象编程至关重要。 #### 对象与引用定义 - **对象**:在Java中,...
此外,如果开启了引用压缩,对象引用可能会占用更少的空间。 在进行性能优化时,了解对象大小可以帮助我们减少内存消耗,提高应用程序效率。例如,如果我们发现某个对象特别大,可能需要考虑是否可以通过重构代码来...
(1)一个引用变量可以指向0个或1个对象,也就是说它可以是null或者引用一个实际的对象。 (2)一个对象可以被多个引用变量(N个)指向。这种情况在多线程编程或对象共享时常见。 当引用变量不再指向一个对象,且...
2. **对象的参数传递**:当传递对象作为参数时,实际上传递的是对象引用的副本。这意味着在方法内部对这个引用所做的任何更改都不会影响到原始引用。但是,如果通过该引用修改了对象本身的状态,则会影响到原始引用...
1. **一对一关系**:一个对象引用可以指向零个或一个对象。如果一个引用变量未指向任何对象,则其值为`null`。 2. **多对一关系**:一个对象可以被多个引用指向。这意味着不同的引用可以共享同一个对象。 例如: `...
现举一例子说明对象引用作函数参数的格式。 #include class M { public: M() { x=y=0; } M(int i, int j) { x=i; y=j; } void copy(M &m); void setxy(int i, int j) { x=i; y=j; } void print() {cout,...
引用一个对象实例和该对象的实例方法。在 C 或 C 中与委托最接近的是函数指针,但函数指针只能引用静态函数,而委托可以同时引用静态方法和实例方法。在后一种情况中,委托不仅存储对方法入口点的引用,还存储对调用...
结果不同分析: 关键在于对象的复制与对象的引用的本质区别:对象的复制:Point second(one)是将对象一的数据成员复制成对象二的数据成员,复制完成后各不影响。即对对象二的数据进行改变不影响对象一的数据值。而...
### Java对象引用详解 #### 一、Java对象与引用的基本概念 在Java中,对象是类的一个实例,而引用则是指向这些对象的变量。理解Java中的对象与引用之间的区别至关重要,因为这涉及到如何管理和操作对象。 #### 二...
选定对象,查找所有的引用地方,目前可查找场景内对象身上的唯一引用和List内的引用,包含选定对象的所有脚本,和GameObject。
然而,在导出数据到 SQL 中时,这个空行将导致错误“未将对象引用设置到对象实例中”。 解决方法: 为了解决这个问题,可以将 DataGridView 的 AllowUserToAddRows 属性的值设置为 false。这将阻止 DataGridView ...
如果一个对象没有任何引用指向它(所有引用都改变指向其他对象),那么这个对象就会变成垃圾,Java的垃圾回收机制会在适当的时候回收这个不再使用的内存空间。 最后,有些情况下我们可能只创建对象用于一次性操作,...
CString有关对象和引用知识 课件 课件