String, StringBuffer, StringBuilder 클래스
문자열 관련 클래스에는 String, STringBuffer와 Java 5.0에서 추가된 StringBuilder가 있다. 이 클래스들은 모두 문자열을 조작할 수 있는 특징을 가지고 있지만 조금씩 다른 특징을 가지고 있으므로 이에 대해서 알아두어야 한다.
String 클래스는 한 번 생성된 객체의 문자열은 변경할 수 없는 불변승ㄹ을 가지며, StringBuffer클래스는 불변성을 가지고 있지 않아 문자열 연결시 좀 더 효율적으로 동작한다. 또한 동기화 처리가 되어 있어 여러 스레드가 동시에 접근ㅇ하더라도 문자열을 안정적으로 다룰 수 있다. 그리고 StringBuilder 클래스는 StringBuffer클래스에서 동기화 처리 기능을 제거한 것으로StringBuffer클래스와 동일한 기능을 가진다.
String, StringBuffer 클래스 객체 비교
String 클래스
String s1 = "Java";
String s2 = "Java2";
String s3 = new String("java");
String s4 = new String("java2");
s1 == s2 |
true |
s1 == s3 |
false |
s3 == s4 |
false |
s1.equals(s2) |
true |
s1.equals(s3) |
true |
s3.equals(s4) |
true |
==연산자는 객체의 주소를 비교한 것입니다.
equals 메소드는 실제 저장된 데이터를 비교한 것입니다.
StringBuffer b1 = new StringBuffer("java");
StringBuffer b2 = new StringBuffer("java2");
sb1 == sb2 |
fasle |
sb1.equals(sb2) |
false |
==연산자는 객체의 주소를 비교한 것입니다.
equals 메소드는 실제 저장된 데이터를 비교한 것입니다.
equals()메소드는 java.lang.Object 클래스에 정의되어 잇으며 이 클래스에 정의되어 잇는 equals()메소드는 "=="연산자와 동일한 역활을 수행한다. 하지만 String 클래스와 Wrapper클래스(Integer. Character, Double 등)는 이 메소드를 오버라이딩해서 객체의 값을 비교할 수 있게 되었습니다.
문자열 연결하기
String 클래스는 concat()메소드를 사용해서 문자열을 연결할 수 있으며 StringBuffer클래스는 append()메소드를 사용해서 문자열을 연결할 수 잇습니다.
String 클래스의 문자열 연결
String s1 = "java"
String s2 = s1.concat("fun");
StringBuffer클래스의 문자열 연결
StringBuffer sb1 = new StringBuffer("java");
StringBuffer sb2 = sb1.append("enjoy");
String 클래스의 문자열 치환
다음 코드는 "java"문자열에서 'a'를 'A'로 변경하는 코드다
Stirng s1 = new String("java");
String s2 = s1.replace('a','A');
String 클래스는 불변성을 가지고 있지 않기 때문에 'a'가 'A'로 변경된 문자열을 새로운 객체로 생성된다.
2)StringBuffer클래스의 문자열 치환
StringBuffer 클래스의 replace() 메소드는 메소드는 String 클래스의 replace()메소드와 기능이 약간 다르다.
StringBuffer sb1 = new StringBuffer("java");
StringBuffer sb2 = sb1.replace(0, 4, "good");
java.lang.String 클래스의 주요 메소드
StringBuffer |
append(String sss) 기존 문자열에 지정된 문자열 sss을 추가한다. |
StringBuffer |
insert(int offset, String sss) 지정된 문자열 str을 지정된 offset 위치에 삽입한다. |
char |
charAt(int index) 기존 문자열에서 지정된 인덱스의 문자를 반환한다. |
StringBuffer |
replace(int start, int end, String sss) 기존 문자열 start부터 end-1까지의 문자열을 문자열 str로 치환한다. |
StringBuffer |
reverse() 기존 문자열을 역순으로 변경한다. |
String |
substring(int start, int end) |
String |
toString() StringBuffer 객체의 문자열을 String객체의 문자열로 변환해서 반환한다. |
java.lang.StringBuffer 클래스의 주요 메소드
StringBuffer |
append(Stirng str) 기존 문자열에 지정된 문자열 str을 추가한다. |
StringBuffer |
insdert(int offset, String str) |
char |
charAt(int index) 기존 문자열에서 지정된 인덱스의 문자를 반환한다. |
StringBuffer |
replace(int strat, int end, String str) 기존 문자열 start 부터 end-1까지의 문자열을 문자열 str로 치환한다. |
StringBuffer |
reverse() 기존 문자열을 역순으로 변경한다. |
String |
substring(int start, int end) |
String |
toString() StringBuffer 객체의 문자열을 String 객체의 문자열로 변환해서 반환한다. |
'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글
JAVA - 입력, 출력 클래스 (0) | 2013.10.11 |
---|---|
JAVA - java.io 패키지 (0) | 2013.10.10 |
JAVA - java.lang 패키지 (0) | 2013.10.08 |
JAVA - 중첩 클래스 (0) | 2013.10.08 |
JAVA 가비지 컬렉션 (2) | 2013.10.06 |