Ch9-7~10. String 클래스
0. 목차
Chapter9. java.lang 패키지와 유용한 클래스
Ch9 - 7. String 클래스
Ch9 - 8. 문자열(String)의 비교
Ch9 - 9. 문자열 리터럴(String리터럴)
Ch9 - 10. 빈 문자열(empty string)
Ch9 - 7. String 클래스
▶ String 클래스란?
▷ 문자열을 다루는 데 사용되는 클래스
▷ String 클래스 = 데이터(char[] : 문자 배열) + (String 관련)메서드
- String 클래스 code
public final class String implements java.io.Serializable, Comparable { private char[] value; // private으로 문자 배열을 가짐 ... // 문자열과 관련된 메서드들이 있음 }
▷ immutable class : 내용을 변경할 수 없는 불변 클래스
▶ StringBuffer
▷ StringBuffer : 내용 변경 가능, String처럼 불변X
▷ 덧셈 연산자를 이용한 문자열 결합은 성능 저하
▷ 저장 공간 하나에서 덧셈을 하는게 아니라, 계속 저장 공간을 만들어야 하니까
▷ 이렇게 변경이 잦을 때, 내용 변경 가능한 StringBuffer 사용
Ch9 - 8. 문자열(String)의 비교
▶ String str = "abc"
vs String str = new String("abc")
▷ String str = "abc"
▷ String str = new String("abc")
항상 새로운 문자열이 만들어짐
▶ ==
vs equals
▷ ==
: 주소 비교
▷ equals
: 내용 비교
String은 equals
로 내용 비교!
Ch9 - 9. 문자열 리터럴(String리터럴)
▶ 문자열 리터럴은?
▷ 프로그램 실행 시 자동으로 생성
▷ new String("abc")
이렇게 안해도 자동 생성
▷ constant pool(상수 저장소)에 저장
▷ 리터럴 : 상수
▷ string 객체 = 불변!
▷ 같은 내용의 문자열 리터럴은 하나만 생성
Ch9 - 10. 빈 문자열(empty string)
▶ 빈 문자열(empty string)이란?
▷ “”
▷ 내용이 없는 문자열
▷ 크기가 0인 char형 배열을 저장하는 문자열
String str = ""; // str을 빈 문자열로 초기화
▷ 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능
char[] chArr = new char[0]; // length가 0인 char배열
int[] iArr = {}; // length가 0인 int배열
- 배열의 길이 vs 배열의 크기
엄밀히 말하면 길이와 크기는 다름
new int[10]
int = 4byte
4byte가 10개 = 4byte × 10 = 40byte
- 길이(length) : 10
- 크기(size) : 40byte
- 길이(length) : 10
▷ 문자(char)와 문자열(String)의 초기화
- 기본값(유니코드 첫번째 문자) : 거의 사용X
String s = null; char c = '\u0000';
String : ""
빈 문자열char : ' '
공백
String s = ""; char c = ' ';