JAVA集合存放的是對象還是對象引用?,java集合
問題:添加一個對象到集合中時,集合裡面存放的是對象的引用還是對象本身?
答:對象的引用。以下代碼可以證明:
1 import JAVA.util.ArrayList; 2 import JAVA.util.List; 3 4 public class Test5 { 5 public static void main(String args[]){ 6 List<User> userList1 = new ArrayList<User>(); 7 List<User> userList2 = new ArrayList<User>(); 8 User user1 = new User(); 9 userList1.add(user1); 10 userList2.add(user1);11 12 System.out.println("SET VALUE FOR USERLIST2:"); 13 for(User user: userList2){14 user.setName("name");15 user.setPassword("password"); 16 }17 System.out.println("PRINT VALUE FOR USERLIST1:");18 for(User user: userList1){19 System.out.println(user.getName()); 20 System.out.println(user.getPassword()); 21 } 22 }23 24 public static class User{25 private String name;26 private String password;27 28 public String getName() {29 return name;30 }31 public void setName(String name) {32 this.name = name;33 }34 public String getPassword() {35 return password;36 }37 public void setPassword(String password) {38 this.password = password;39 }40 }41 }
輸出結果:
SET VALUE FOR USERLIST2:
PRINT VALUE FOR USERLIST1
name
password
設定userList2中元素的value,但是userList1中元素的value也發生了改變,證明集合中存放的是對象的引用。
摘自:http://bettereveryday.iteye.com/blog/682322