2020. 4. 24. 12:11ㆍJAVA
String Builder
- String의 문제점을 해결하기 위해 등장한 클래스
- String에 Literal을 저장하면 데이터가 static영역에 저장됨.
(static영역의 데이터는 변경 안됨.)
- + 연산을 이용해서 결합하면 메모리 낭비가 발생할 수 있음.
- 메모리 낭비를 줄이기 위해 등장한 클래스가 StringBuilder
- 이 메소드는 여분의 공간을 가지고 인스턴스가 만들어져서 문자열을 추가할 때 복사작업을 하지 않음.
- 문자열을 추가할 때는 append(String str)
- 다시 원래의 문자열로 되돌릴때는 toString()을 호출
- 최근의 자바버전에서는 String이 StringBuilder처럼 동작하기 때문에 이용안함
stack - method가 호출될때 생성,일시적(메소드가 끝나면 사라짐),메소드가 소유권을 가지고 있음.
heap - 인스턴스영역, 해제가능,프로그래머가 소유권을 가지고있음. 언제든지 프로그래머가 heap에 뭘 만들수 있고(new),
해제할 수 있음(null).
method(static) - 클래스(메소드,static), method,literal, 메소드 영역에 있는건 절대로 메모리 해제가 일어나지 않음.
JVM이 소유, 프로그램이 끝날때 해제
*method영역의 데이터를 heap으로 옮기기 위한것이 StringBuilder
지역변수(stack) -> 인스턴스(heap)로 옮기는 이유 => 지역변수를 계속 사용하기 위해(stack은 일시적이기 때문)
ex) this.num = num (num은 지역변수여서 없어질테니 계속 사용하려고 옮긴것)