9-7~10 String 클래스, 문자열 비교, 빈 문자열

oyeon·2020년 12월 22일
0

Java 개념

목록 보기
11/70

String 클래스

  • 데이터(char[]) + 메서드(문자열 관련)
  • 내용을 변경할 수 없는 불변(immutable) 클래스
String a = "a";
String b = "b";
a = a + b;

0x100번지의 "a"가 바뀌는 것이 아니라 / 새로운 0x300번지에 값을 담고 a는 0x300을 가리키게 된다.

  • 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐.(∵계속 새로운 객체가 생성)
  • 문자열의 결합이나 변경이 잦다면, 내용을 변경가능한 StringBuffer를 사용(내용변경 가능)

문자열의 비교

  • String str = "abc"; vs String str = new String("abc");
String str1 = "abc";	// 문자열 리터럴. "abc"의 주소가 str1에 저장
String str2 = "abc";	// 문자열 리터럴. "abc"의 주소가 str2에 저장
String str3 = new String("abc");	// 새로운 String 인스턴스 생성
String str4 = new String("abc");	// 새로운 String 인스턴스 생성

문자열은 내용 변경이 불가하기 때문에, 오른쪽 그림과 같이 새로운 객체를 만들 필요 없다.

문자열 리터럴

  • 문자열 리터럴은 프로그램 실행시 자동으로 생성된다.(constant pool에 저장)
  • 같은 내용의 문자열 리터럴은 하나만 만들어진다.

빈 문자열("", empty string)

  • 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열
String str = ""; // 빈 문자열로 초기화
  • 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
char[] chArr = new char[0];	// 길이가 0인 char 배열
int[] iArr = {};		// 길이가 0인 int 배열

왼쪽 방식말고 오른쪽 방식으로 구현하자.

profile
Enjoy to study

0개의 댓글