String Builder

2020. 4. 24. 12:11JAVA

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은 지역변수여서 없어질테니 계속 사용하려고 옮긴것)

 

'JAVA' 카테고리의 다른 글

Thread  (0) 2020.04.29
TreeSet  (0) 2020.04.28
예외 처리  (0) 2020.04.22
내부 클래스  (0) 2020.04.21
Business Logic 구현 방법  (0) 2020.04.20