String이라는 객체는 불변 객체일까?

여상우·2022년 6월 9일
0

Java

목록 보기
1/4
post-thumbnail

2022.06.09


String은 불변 객체 이다.
한 번 선언하고 그 아래에 추가적인 처리를 진행하더라도 메모리단에서는 변하지 않는다는것

public static void main(String[] args) {
	String greeting = "Hello";
    System.out.println(greeting);
    System.out.println(greeting.hashCode());
    
    greeting = greeting + "!!!";
    System.out.println(greeting);
    System.out.println(greeting.hashCode());
}

이렇게 코드를 적게 되면 위에서는 Hello가 출력이 되고 아래에서는 Hello!!!가 출력이 된다.
그렇다면 위에 있는 greeting과 아래의 greeting은 같은 객체일까 다른 객체일까?

아래에서 !!!을 추가한 greeting은 새로운 메모리에 값을 새로 할당하여 새로운 Class를 greeting이라는 이름으로 만든 것이라고 생각하면 된다.

따라서 맨 처음에 있던 greeting(Hello라는 값을 가진)과는 다른 녀석이라고 판단이 가능하다.
그러니까 String은 불변 객체가 맞다!

profile
Keep forwarding person.

0개의 댓글