String Class
- String Class는 자바에 구현되어있는 클래스다.
- String str1 = new String("abc")로 선언되는 String은 인스턴스로 선언되어 Heap 메모리 영역에 저장된다.
- String str2 = "abc"로 선언되는 String은 Static 영역에 선언된다.
String Class의 메모리 낭비
String은 Final로 선언된다고 한다. 따라서 String을 합치는 연산을 하게 되면 String은 기존의 참조 변수에 값을 저장하는 것이 아니다. String 덧셈 연산을 한 후, 새로운 인스턴스를 생성해 저장한다. 그리고 참조변수가 그 인스턴스를 가리키게 하는 것이다.
String은 Final로 선언된 탓에 기존의 인스턴스는 Garbage Collector가 메모리를 수거해갈 때 사라지지 않는다. 따라서 메모리 낭비가 될 수 있다. 이런 이유로 String Class보다는 StringBuilder 및 StringBuffer 클래스를 사용한다.
StringBuilder, StringBuffer 활용하기
- StringBuilder와 StringBuffer 클래스는 내부적으로 가변가능한 char[] 멤버변수를 가지고 있다.
- 새로운 문자가 들어오면, 내부적으로 가변가능한 문자열 배열이 변경된다.
- 변경된 문자열은 toString() 메서드로 반납되게 된다.
- StringBuffer Class는 문자열 Array를 가지고 있으므로, Array처럼 사용하게 된다.
StringBuffer 클래스를 활용한 테스트
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer abc = new StringBuffer();
abc.append("abc");
abc.append(234);
// abc 변수에 저장된 값을 출력함 with toString()
System.out.println(abc);
// abc에 저장된 총 문자열의 길이를 반환함.
System.out.println(abc.length());
// abc에 저장된 문자열을 뒤로 뒤집어서 반환함.
System.out.println(abc.reverse());
// abc에 저장된 특정 문자열을 인덱스로 접근해서, 그 부분을 원하는 문자열로 변경한다.
System.out.println(abc.replace(0, 2, "9999999999"));
}
}
메서드 | 내용 |
append() | StringBuffer의 문자 배열에 문자열을 넣어준다. |
length() | StringBuffer에 저장된 문자열의 길이를 반환해준다. |
reverse() | StringBuffer에 저장된 문자열을 뒤집어서 반환해준다. |
replace() | StringBuffer에 저장된 특정 위치의 문자열을 원하는 문자로 변경해준다. |
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java의 상속과 관련된 키워드 (0) | 2021.10.23 |
---|---|
Java의 TestBlock (html, JSON) (0) | 2021.10.23 |
자바의 Object Class (0) | 2021.10.23 |
Java의 여러 내부 클래스 정의, 유형 (0) | 2021.10.23 |
Java의 Lambda Expression(람다식) (0) | 2021.10.22 |