引用java

时间:2017-03-31 01:24:09

标签: java

在java中,以下2个用法有什么区别,

Employee e1 = new Employee();  
1.Employee e2 = (Employee)e1.clone();  
2.Employee e2 = e1;

在第二种情况下,我认为e2引用了e1也引用的对象。因此,它们具有相同的具有不同参考编号的对象(可以是存储器地址)。

第一宗案件怎么样? e1和e2是否有不同的对象和参考?

2 个答案:

答案 0 :(得分:3)

第一个通过克隆原始对象的数据来创建一个新对象 - 该类必须实现$transform = odbc_exec($connection, " TRANSFORM MAX(Transactions.Sequence) As Seq SELECT Transactions.StoreId FROM [Site5].[dbo].Transactions GROUP BY Transactions.StoreId PIVOT Transactions.TerminalId "); 接口(一个很好的例子是Clonable)。

第二个只是对相同对象的另一个引用。

答案 1 :(得分:0)

在第一种情况下,您要实例化一个新对象并将引用存储在e1中。

假设您要在下一步e1.setSalary(10000);

中更改薪水

然后如果克隆了e1个对象, Employee e2 = (Employee)e1.clone();将保存一个新工具,其中工资作为存储在e1中的当前值。 基本上e2将是Employee Class的新实例,其工资为10000

如果您以后更改e2的工资,则不会影响e1。 例如.. e2.setSalary(2000);那么e1中的工资将保持不变 e1 - > 10000 e2 - > 2000

在第三步中,您引用e1到e2,即。 e2将指向由e1引用的实例,e1和e2将指向相同的实例... 因此克隆的对象将类似于没有引用的对象,这有资格gc对其进行操作

要了解有关克隆的更多信息,请参阅此帖子https://stackoverflow.com/a/9834683