day17 - 교육내용 복습 StringBuilder

String name = "일순신"; // 메모리상에 name 1개 소모
name += ",이순신"; // 메모리상에 name 1개 소모
name += ",삼순신"; // 메모리상에 name 1개 소모
name += ",사순신"; // 메모리상에 name 1개 소모
name += ",오순신"; // 메모리상에 name 1개 소모
name += ",육순신"; // 메모리상에 name 1개 소모
name += ",칠순신"; // 메모리상에 name 1개 소모
name += ",팔순신"; // 메모리상에 name 1개 소모
name += ",구순신";

누적되어진 메모리상의 name은 9개 소모된다.

추가로 찾아서 공부한 내용
String 객체는 수정되지 않기 때문에 불변객체라고 한다. 따라서 위에처럼 그냥 String으로 계속 더하면 문자열을 연결할 때마다 새로운 문자열 객체가 추가되게 된다. 개체 생성은 다른 작업에 비해 시간이 더 많이 걸리기 때문에 위와 같은 작업이 많아질수록 필요없는 개체가 계속 생성되어서 비효율적인 코드가 생성된다.

따라서 위와 같은 비효율적인 코드를 만들지 않기 위해서 코드 작성이 더 길어질 수는 있으나 StringBuilder를 사용하는 것이다. StringBuilder는 문자열을 더 할 때 새로운 객체를 생성하는 것이 아니라 기존 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르고 상대적으로 부하도 적게 일어난다.

StringBuilder를 통해서 객체를 생성하고 append()로 추가하고자 하는 문자열을 추가한다. 출력할 때에는 toString()을 적어야한다. 초기화는 eg) sb.setLength(0); 길이를 0으로 하던가, eg) sb = new StringBuilder();를 사용하면 되는데 후자는 결국 객체를 또 생성하는 것이기 때문에 전자가 더 빠르다.

Posted through the AVLE Dapp (https://avle.io)

Sort:  
 3 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
image.png
please click it!
image.png
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)

The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.

Thanks for supporting @se-witness with your witness vote. Heres a free vote!

Upvoted! Thank you for supporting witness @jswit.

즐거운 날 되세요~~^^

!shop

Hi~ bigbear34!
@garamee21 has gifted you 1 SHOP!

Currently you have: 28 SHOP

View or Exchange SHOP Please go to steem-engine.net.

Are you bored? Play Rock,Paper,Scissors game with me!


안녕하세요.
이 글은 SteemitKorea팀(@maikuraki)님께서 저자이신 @bigbear34님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.079
BTC 61335.03
ETH 1628.31
USDT 1.00
SBD 0.41