Java基础——java的引用问题,
Java基础——java的引用问题,
1.
public class EasyError1 {
class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public List<Student> getList(List<String> names){
List<Student> studentList=new ArrayList<Student>();
Student student=new Student();
for(String str:names){
student.setName(str);
studentList.add(student);
}
return studentList;
}
public static void main(String[] args) {
EasyError1 easyError1=new EasyError1();
List<String> list=new ArrayList<String>();
list.add("pitt");
list.add("tom");
list.add("weiling");
List<Student> studentList= easyError1.getList(list);
for(Student student:studentList){
System.out.println(student.getName());
}
}
}
/******************************************************
* the results in console:
* weiling
* weiling
* weiling
*因为Student student=new Student();写在了循环的外面,在循环里每次都把名字放在了一块堆内存里,并把引用
*存放在了list中,只是一个引用,而不是三个不同的引用存放在list中,最后,这个引用只想向了“weiling”字符串,
*所以最后打印出来的就都是一个人的人名了。
*所以,记住,把new一个引用放在循环的内部!
*
*******************************************************/
相关文章
- 暂无相关文章
用户点评