String 클래스
- 자바에서는 문자열을 위한 클래스를 제공
- String 클래스는 문자열을 저장하고 이를 다루는데 필요한 메서드를 함께 제공
변경 불가능한(immutable) 클래스
- String 클래스에는 문자열을 저장하기 위해서 문자형 배열(char[]) 참조변수 value를 인스턴스 변수로 정의해놓고 있다.
- 인스턴스 생성 시(new String(매개변수)) 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수 value에 문자형 배열로 저장되는 방식 입니다.
- 한번 생성된 String 인스턴스가 갖고 있는 문자열은 읽어 올수만 있고 변경할 수 없습니다. +를 사용해서 문자열을 결합할때 인스턴스에 저장되어 있는 문자열이 변경 되는것이 아니라 새로운 String 인스턴스가 생성 되는 것 입니다.
- 문자열 결합을 자주하게 되면 성능이 떨어지기 때문에 자주 문자열 결합을 해야될 때는 StringBuffer를 이용하기
문자열의 비교
- 문자열을 가진 인스턴스는 하나만 만들어져서 공유한다. 여러개의 변수로 문자열을 저장하면 모든 변수들은 하나의 인스턴스를 가리킨다.
- new 연산자를 이용해서 문자열을 만들면 문자열 내용이 같아도 항상 새로운 인스턴스를 만들어 문자열이 만들어진다. new를 이용해 문자열을 저장할 일은 별로 없다. 사용 안하는것이 좋음
- 문자열의 내용을 비교할때는 equlas() 사용 "=="은 인스턴스의 주소를 비교하기 때문이다.
문자열 리터럴
- 문자열 리터럴은 프로그램이 실행되면 자동으로 만들어져 constant pool(상수 저장소)에 저장된다.
- 같은 내용의 문자열 리터럴은 하나만 만들어진다.
빈 문자열(empty string)
- 내용이 없는 문자열을 말한다. 길이가 0인 char형 배열을 저장하는 문자열이다.
- 길이가 0인 배열을 생성하는 것은 어느 타입이가 가능하다. char,int,short,long 등등...
- 문자와 문자열의 초기화
- String str = ""; // 빈 문자열 초기화
- char c = ' '; // 공백 초기화 char c = '';는 표현 불가