-개요
JAVA는 문자열을 저장할 수 있는 기본 타입이 없다.
char를 생각했을 수도 있지만 char의 경우 한 글자씩만 표현이 가능하고 문자열은 저장을 할 수 없다.
그래서 문자열을 저장하기 위해 String의 참조타입이 나왔다.
-사용
String str1 = "안녕";
String str2 = new String("안녕");
두가지 방법으로 사용이 가능하다. 보통의 경우 str1의 방법으로 많이 사용을 하며 꼭 "(큰따옴표)로 묶어줘야 한다.
앞의 포스팅에서 기술 했듯이 str들의 문자가 같아도 참조하는 주소 값이, 실제로 저장되는 공간은 서로 다르기 때문에 ==같은 연산자를 사용했을 때 결괏값이 원하지 않는 방향으로 나온다.
new String으로 문자열을 선언하는 방식은 별로 좋지 않다.
스트링의 경우 스트링만 관리를 하는 String Pool이(Heap Area안에) 있다.
"안녕"이라고 선언후 또 "안녕"을 선언했을 때 String Pool안에 "안녕"이 있는지 확인을 하고 있다면 같은 주소 값을 참고한다.
이 경우 == 사용이 가능하다.
하지만 new를 사용했을때는 String Pool에 만들어지는 게 아니라 Heap Area에 따로 생성이 된다.
두 문자열이 같은지 확인을 하려면
String str1 = "안녕";
String str2 = "안녕";
System.out.println(str1.equals(str2));
//[문자열 변수].equals([같은지 비교할 변수 또는 "문자열"])
이렇게 .equals()를 사용해주면 된다.
위의 코드는 String Pool에 의해 관리되어 같은 주소 값을 갖고 있어 ==이 가능하지만 equals를 사용해보기 위해 간단하게 작성했다.
'Back-end > JAVA' 카테고리의 다른 글
13. 참조 타입(Reference Type) - Array 심화 (0) | 2021.06.18 |
---|---|
12. 참조 타입(Reference Type) - Array 기본 (0) | 2021.06.18 |
10. 참조 타입(Reference Type) - 개념 (0) | 2021.06.17 |
9. 반복문(for, while, do-while) (0) | 2021.06.15 |
-컴파일러 에러 (0) | 2021.06.15 |