728x90
개인적인 메모를 위해 작성된 글이므로 가벼운 참고용으로 봐주세요.
StringBuilder를 사용하는 이유
① str이 가르키는 객체와 str2가 가르키는 객체가 같기때문에 결과는 true가 나온다.
② str이 가르키는 객체와 str2가 가르키는 객체가 다르기때문에 결과는 false가 나온다.
③ str이 가르키는 객체와 str2가 가르키는 객체가 다르기때문에 결과는 false가 나온다.
①과 같이 코드를 짜게 되면 같은 내용을 재사용할 수 있어서 효율적이고 좋은 것 같다.
그러나 아래와 같은 상황에서 봤을 때 결과값은 '***'인데,
메모리상으로는 '*', '**', '***' 이렇게 3가지가 생기기때문에 비효율적이다.
위의 상황이 왜 비효율적인지 이해가 안되면 아래와 같은 상황을 보자.
'100개짜리 별'을 만들기위해 위에 처럼 코드를 짜게되면 '*', '**', '***' ... '100개짜리 별'
총 100가지의 객체가 생성되므로 굉장히 비효율적이다.
그래서 탄생한 게 StringBuilder이다.
StringBuilder를 이용하면 객체는 '*', '100개짜리 별' 이렇게 두개만 생성되므로 메모리로 봤을 때 효율적이다.
※ 물론 메모리 상으로는 아래와 같이 객체를 1개만 생성하는 게 좋지만
사람이 작업하기에는 그닥 좋지않으니까...
※ StringBuilder와 StringBuffer는 비슷한데 웹에서 비동기적으로 작동하는 경우에는
StringBuffer로 코드를 짜는 게 더 안전하다고 한다.
728x90
반응형
'IT관련 > 정리' 카테고리의 다른 글
[IT용어] RSA 암호 (0) | 2020.08.02 |
---|---|
[IT용어] 에이젝스(Ajax) (0) | 2020.07.31 |
[IT용어] 디바운싱(debouncing)과 스로틀링(throttling) (0) | 2020.07.29 |
스프링부트(Spring Boot) 소개 (0) | 2020.07.28 |
[IT용어] SQL의 인덱스란? (0) | 2020.07.27 |
댓글