添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
2012-03-03 19:33
281 查看
问题:添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
答:对象的引用。以下代码可以证明:
Java代码
import java.util.ArrayList;
import java.util.List;
public class Test5 {
public static void main(String args[]){
List<User> userList1 = new ArrayList<User>();
List<User> userList2 = new ArrayList<User>();
User user1 = new User();
userList1.add(user1);
userList2.add(user1);
System.out.println("SET VALUE FOR USERLIST2:");
for(User user: userList2){
user.setName("name");
user.setPassword("password");
}
System.out.println("PRINT VALUE FOR USERLIST1:");
for(User user: userList1){
System.out.println(user.getName());
System.out.println(user.getPassword());
}
}
public static class User{
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
}
其输出结果是:
SET VALUE FOR USERLIST2:
PRINT VALUE FOR USERLIST1
name
password
设置userList2中元素的value,但是userList1中元素的value也发生了改变,证明集合中存放的是对象的引用。
转自:http://bettereveryday.iteye.com/blog/682322
答:对象的引用。以下代码可以证明:
Java代码
import java.util.ArrayList;
import java.util.List;
public class Test5 {
public static void main(String args[]){
List<User> userList1 = new ArrayList<User>();
List<User> userList2 = new ArrayList<User>();
User user1 = new User();
userList1.add(user1);
userList2.add(user1);
System.out.println("SET VALUE FOR USERLIST2:");
for(User user: userList2){
user.setName("name");
user.setPassword("password");
}
System.out.println("PRINT VALUE FOR USERLIST1:");
for(User user: userList1){
System.out.println(user.getName());
System.out.println(user.getPassword());
}
}
public static class User{
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
}
其输出结果是:
SET VALUE FOR USERLIST2:
PRINT VALUE FOR USERLIST1
name
password
设置userList2中元素的value,但是userList1中元素的value也发生了改变,证明集合中存放的是对象的引用。
转自:http://bettereveryday.iteye.com/blog/682322
相关文章推荐
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用
- 集合存放的是对象还是对象引用?
- Java中对对象的操作是引用操作-建立Temp对象是,应该在循环里面new一个新的地址,再使用add添加到集合中去
- 给定一个 ArrayList<Integer>的一个对象,实现在这个集合中添加一个字符串
- Java中list存放的是值还是对象的引用问题
- 一个ArrayList<Integer>的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?(个人理解)
- final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 在framework里面添加一个theme,在app引用
- 一个例子说明java数据类型包括对象是赋值还是引用!!!
- 关于js中一个对象当做参数传递是按值传递还是按引用传递的个人看法
- 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- 如何 创建一个model对象保存到LIST集合里面并取出来
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- 面试题:使用finalkeyword修饰一个变量时,是引用不能变,还是引用的对象不能变?
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?