규칙 1. String클래스 = 데이터( char[] 문자배열 ) + 메서드( 문자열관련 ) 2. 내용을 변경할수 없는 불변 클래스 ( immutable ) 3. 덧셈 연산자(+)를 이용한 문자열 결합은 성능이 떨어짐. ( 계속 새로운 객체를 만들어내야하니까 ) ㄴ 문자열결합을 자주해야한다면, 내용 변경가능한 StringBuffer를 사용
문자열의 비교 equals
규칙 1. String str = "abc"; // 문자열 리터럴을 이용해서 문자열을 만드는 방법 String str = new String("abc"); 의 비교 // new 연산자를 이용해서 문자열을 만드는방법
뭔가 앞뒤가 맞지 않았었다. 위에서 equals()는 주소비교라 햇는데,
String 문자비교시에 equals()를 쓰라하네??
결론: 원본Object클래스의 equals() 메서드는 주소비교가 맞음.
equals()로 문자열 비교가 가능한 이유는, String객체에서는 equals()메서드를 오버라이딩된 함수를 사용한다.
문자열 리터럴
규칙 1. 문자열 리터럴은 프로그램 실행시 자동으로 생성된다. (constatnct pool(상수저장소)에 저장) 2. 같은 내용의 문자열 리터럴은 하나만 만들어진다. ( String객체는 내용변경불가니까 )
빈 문자열 ( "", empty String )
규칙 1. 내용이 없는 문자열. 크기가 0인 char형 배열을 저장하는 문자열 2. 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능 3. 초기화시 유용함. 문자(char)와 문자열(String)의 초기화
String str = ""; // 빈문자열로 초기화 char[] chArr = new char[0]; int[] chArr = new char[0];