Notice
Recent Posts
Recent Comments
Link
미국산 귤
[Java 기초] 문자열 리터럴과 생성자 차이 알아보기 본문
개강을 앞두고 부랴부랴 자바를 공부하고 있다.
자바에서 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 |