[Java] StringBuffer append("a"+"b") 메모리는 어떻게 할당될까?
Java는 C언어처럼 포인터가 없어 메모리의 주소와 해당 값을 함께 볼 수 없는 단점이 너무 너무 너무~ 크다 !
Java 문서나 많은 글을 읽어도 메모리의 구조가 어떻게 어떤 흐름으로 돌아가는 지 내가 알고 있는 이 답이 확실한가에 대한 의문도 많이 든다.
StringBuffer의 append 메소드를 사용할 때, 어떤 식으로 값이 메모리에 할당되고 흘러가는 지 내가 이해한 바를 정리하고자 한다.
StringBuffer sb = nes StringBuffer();
sb.append("a");
sb.append("b");
단순 참조를 위한 문자열은 String 클래스, 연산이 많은 경우는 가변적으로 문자열을 저장하고 관리하는 StringBuffer 클래스를 사용한다.
위 코드와 같은 경우, 다음과 같은 구조를 보인다.
그렇다면, 이런 경우에는 메모리에 데이터가 어떻게 쌓일까? 궁금증이 들었다.
StringBuffer sb = nes StringBuffer();
sb.append("a"+"b");
물론, String 클래스 문자열 연산의 단점을 보완하고자 StringBuffer 클래스를 사용하는 것이니 굳이 StringBuffer에 String 연산은 안하길 바란다.
본론으로 돌아가서 위 코드의 경우 메모리 구조가 어떻게 될까?
다음과 같은 구조를 보이지 않을까 생각한다.
여기서 sb가 가리키는 주소의 데이터가 단순히 "ab" 데이터가 아닌, string pool에 할당된 "ab"데이터의 주소값을 갖고있을 것이다.
'JAVA > Java' 카테고리의 다른 글
[Java] SimpleCaptcha를 이용한 이미지 보안문자 생성하기 (0) | 2022.11.15 |
---|---|
[Java] POI 라이브러리 사용 : 엑셀 다운로드 로직 구현하기 (0) | 2022.11.15 |
[Java] 특정문자로 문자열 나누기 split 사용방법과 주의점 (0) | 2022.11.15 |
[Java] StartsWith/EndWith : 문자열의 시작/끝 부분과 특정 문자열이 일치하는지 확인하기 (0) | 2022.11.15 |
[Java] String, StringBuffer, StringBuilder의 차이점 (0) | 2022.11.15 |
[Java] String과 new String 차이 (0) | 2022.11.15 |
java Default Method(인터페이스 디폴트 메소드) (0) | 2022.04.26 |
java 이메일 마스킹 처리 (0) | 2022.04.26 |