• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Integer 타입 질문입니다

23.04.22 18:20 작성 조회수 452

0

public static void main(String[] args) {
    Integer a = Integer.valueOf(10);
    Integer b = a;
    a = 20;

    System.out.println("a = " + a);
    System.out.println("b = " + b);
}

=======출력값 ========

a = 20

b = 10

이렇게 하면 값이 변경되는데 PPT에서 변경X라는 말이 무슨 말일까요 ?

답변 1

답변을 작성해보세요.

0

OMG님의 프로필

OMG

2023.04.22

안녕하세요. hjemsti님, 공식 서포터즈 OMG입니다.
.

영한님이 강의에서 설명하는 클래스의 참조로 인한 값이 공유되는 부분을 예시로 보시면 이해에 도움이 되실거같은데요.

static class Item {
    String name;
    public Item(String name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

 

다음과 같은 간단한 Item클래스(Wrapper클래스도 아니고, String 클래스도 아닌)가 있을 때

Main{
   
    Item itemA = new Item("itemA");
    Item itemB = itemA;

    itemA.setName("itemC");

    System.out.println("itemA.name = " +itemA.getName());
    System.out.println("itemB.name = " + itemB.getName());

}

결과

itemA.name = itemC

itemB.name = itemC


itemA인스턴스와 itemB인스턴스는 같은 참조를 갖게 됩니다.

하지만 Wrapper 클래스와 String 클래스도 강의에서 말씀하시듯 Class이기 때문에 b = a; 의 참조를 막을 순 없지만 직접 테스트해서 확인해보셨듯 값이 변경되지 않고 서로 다른 값을 출력하는 그 부분을 말씀하신 것으로 이해하시면 됩니다.


.
감사합니다.