미국산 귤

[Java 기초] 문자열 리터럴과 생성자 차이 알아보기 본문

Java

[Java 기초] 문자열 리터럴과 생성자 차이 알아보기

migyul 2024. 8. 11. 15:46

개강을 앞두고 부랴부랴 자바를 공부하고 있다.

 

자바에서 String을 선언할 수 있는 방법이 크게 2가지 있다.

 

 

 

1. 문자열 리터럴로 선언

String str = "안녕하세요!";

 

 

 

2. 생성자로 선언

String str_2 = new String("안녕하세요!");

 

 

 

 

이렇게 선언한 뒤 str과 str_2를 출력해보면, 둘 다 똑같이 "안녕하세요!"라고 나온다.

하지만 두 방식에는 큰 차이가 있다.

 

 

만약 아래와 같이 str_3를 선언한다면,

String str_3 = "안녕하세요!";

 

 

str_3와 동일한 문자열은 무엇일까?

str? str_2? 둘 다?

정답은 바로

 

 

 

 

 

str만 동일하다.

 

 

 

 

 

자바에서는, 같은 문자열 리터럴이 여러 번 할당될 경우 맨 처음 선언된 변수의 주소를 그대로 가져다 쓰게 된다.

즉, str_3를 출력할 경우 "안녕하세요!" 문구도 나오는데,

이는 새롭게 str_3가 생성된 게 아니라 str의 주소를 그대로 가져와서 str_3에 넣은 것이다.

str_2는 생성자를 이용해 선언한 String이기 때문에 아예 다른 위치에 새롭게 선언되는 것이기 때문에 str 주소를 가져다 쓰는 것이 아니다.

 

 

 

아주 간단한 개념이지만 알아두면 좋다.

 

 

 

 

 

결론

str != str_2

str_2 != str_3

str == str_3

 

 

참고로

.equals() 메소드로 str, str_2, str_3를 비교할 경우

당연히 모두 같다는 결과가 나온다!!

내용은 동일하기 때문

 

'Java' 카테고리의 다른 글

[Java] 간단한 회원가입 프로그램 구현  (0) 2024.08.24
[Java] 기본 메소드 정리  (0) 2024.08.14