-개요

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를 사용해보기 위해 간단하게 작성했다.

+ Recent posts