foreach가 List를 옮겨다니며 반복 변수의 값을 바꾸면 List의 값을 바꿀 수 있습니까?

1293 단어
회!
foreach를 통해든 for를 통해든 순환할 때, 대상이 get () 방법으로 가져오는 것이지 new에서 나오는 것이 아니라면, 순환에서 대상의 속성을 바꾸는 방식으로 List 집합에서 대상의 속성 값을 바꿀 수 있습니다.new에서 나온 대상이 아니라면 이 변수에 저장된 것은 List에서 전송된 진정한 대상의 주소일 뿐이고 이 변수의 자체 대상은 없을 것이다. 물론 새로운 저장 공간을 차지하지 않을 것이다. 순환에서 이 변수에 대한 작업은 모두 이 변수가 가리키는 대상에 대한 작업이기 때문에 List 집합에서 대응하는 대상의 속성 값을 바꿀 것이다.
테스트 코드:
public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        test.test();
    }
    public void test() {
        List list = new ArrayList();
        list.add(new Aoo("aaa"));
        list.add(new Aoo("bbb"));
        list.add(new Aoo("ccc"));
        for(Aoo a : list) {
            if(a.getName().equals("bbb")) {
                a.setName("111");
            }
        }
        for(Aoo a : list) {
            System.out.println("name:" + a.getName());
        }
    }
    class Aoo{
        private String name;
        public Aoo(String name) {
            this.name = name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
    }
  
}

테스트 결과:
name:aaa
name:111
name:ccc

좋은 웹페이지 즐겨찾기