강의로 돌아가기
장혜영

헷갈리는부분좀 도와주세요

String 은 불변클래스잖아요

근데 강의를 보시면 str = str.concat(world); 이렇게하니까 왜 System.out.println(str)은 "hello world가 되는거죠? 불변이면 안바껴야되는거아닌가요???
저렇게해서 바뀌는거면 그냥
str = str.concat(world); 대신에
String str =new String (hello world); 이렇게 써도 되지않나요?

1 개의 답변
강경미

불변클래스가 아닌 다른 클래스들은 str.concat(world); 이렇게만 하고 str을 출력해도 바뀐 결과가 출력되요. 그런데 String 클래스는 불변 클레스 이기때문에 str = str.concat(world); 이렇게 써야만 하죠.. 즉.. str.concat(world); 이 부분이 실행되면서 바뀐 부분을 str = 이부분을 통해서 str 이 가리키게 해주었기 때문에 실제 hello 라는 문자열 이 바뀐것이 아니고, hello world 라는 문자열을 새롭게 만들고 새로 만든 문자열을 str 이 가리키게 해준겁니다.

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.