인프런 커뮤니티 질문&답변

hjemsti님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

기본값 타입

Integer 타입 질문입니다

23.04.22 18:20 작성

·

563

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님의 프로필 이미지

2023. 04. 22. 20:40

안녕하세요. 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; 의 참조를 막을 순 없지만 직접 테스트해서 확인해보셨듯 값이 변경되지 않고 서로 다른 값을 출력하는 그 부분을 말씀하신 것으로 이해하시면 됩니다.


.
감사합니다.

hjemsti님의 프로필 이미지

작성한 질문수

질문하기