*개념
String 클래스는 불변 객체라고 하며, 내용을 변경할 수 없다.
또한 같은 문자열이 나오게 되더라도, 따로 공간을 생성해줘야 한다.
StringBuffer 클래스도 마찬가지다.
하지만, 이 클래스에서 제공하는 메서드들의 기능을 사용할 때에는 메모리 공간을 매번 할당하지 않고 같은 메모리 공간에서 인스턴스를 재사용한다.
*메서드의 종류
1. capacity() : 사전 할당된 문자 배열(버퍼) 크기 반환
- 기본 버퍼 크기 : 16
StringBuffer sb = new StringBuffer();
System.out.println("스트링 버퍼 크기: "+sb.capacity());
2. append() : 문자열 추가
sb.append("Java!");
System.out.println("sb: "+sb);
--> 문자열이 하나씩 추가된다!
3. reverse() : 문자열 뒤집기
System.out.println("reverse() 후: "+sb);
sb.reverse();
4. insert() : 정해진 위치에 문자열 추가
System.out.println(sb);
5. delete() : start~(end-1)까지의 문자
System.out.println(sb);
6. charAt() : 해당 인덱스의 문자 반환
7. length() : 문자열 길이 반환(문자 수)
8. indexOf() : 해당 문자열 위치 반환
LastindexOf() : 해당 문자열 마지막 위치를 반환
* StringBuffer 클래스 실습
- 45번 : 원래 초기값은 16인데, new를 쓸 때 생성자 값에 8을 넣어주었기 때문에 버퍼크기는 8로
초기화된다.
- 52~61번 : 처음 문자를 받을 때는 버퍼크기가 8을 초과하지 않지만, 그 이상이 될 경우 컴퓨터가
알아서 크기를 늘려준다.
- 67~74번 : StringBuilder 클래스는 StringBuffer 클래스에 비해 단일 Thread에서는 사용하기 좋으나,
그 이상으로는 좀 더 자세하게 따져보기 때문에 시간이 많이 걸린다.
결과
* StringTokenizer 클래스 실습
- 개념 : 문자열 사이의 특수문자나 공백을 인식하여. 문자열을 뽑아내는 것.
- 매개변수 : StringTokenizer("문자열","골라낼 특수문자 또는 공백")
메서드
1. hasMoreTokens() : 파싱된 다음 문자열이 있는지 확인
2. nextToken() : 파싱한 문자열을 차례대로 넘겨줌(+출력문)
결과
* StringBuffer 클래스 -> 인스턴스의 주소값 비교
- 8~11번 : 일반적으로 sb와 sb2 객체를 비교하면 그 결과는 같지 않다. 객체 자체가 클래스의 주소
값을 가리키기 때문이다.
- 13~19번 : 그렇다면 equals() 메서드를 사용해 비교해보자. 근데 결과가 false다? 왜일까?
String 클래스에서의 equals()메서드는 객체들의 주소가 가리키는 값을 비교하도록 오버
라이딩이 설정되어 있지만, StringBuffer 클래스는 그렇지 않기 때문이다.
- 21~24번 : 따라서 equals() 메서드가 제 기능을 하도록 StringBuffer 클래스의 toString() 메서드를
String s 인스턴스로 변환해준다. 이 과정을 통해 두 객체의 값이 같아진다.
결과
'N스크린하이브리드앱과정 > JAVA' 카테고리의 다른 글
[4주][1일][3~4th] JAVA: 중첩클래스(nested class) (0) | 2013.08.05 |
---|---|
[3주][5일][3~4th] JAVA: Wrapper 클래스 (0) | 2013.08.02 |
[3주][2일][8th] JAVA: 연습문제 (0) | 2013.07.30 |
[3주][2일][3~4th] JAVA: 다양한 클래스 라이브러리의 활용 (0) | 2013.07.30 |
[2주][5일][3~4th] 인터페이스 상속의 개념. (0) | 2013.07.26 |