문자열에서 + 연산은 컴파일러의 적절한 메소드 호출을 통해 이루어진다.
ex)
String str = "Hello" + '!';
|
이런 형태로 연산이 됨
String str = "Hello".concat(String.valueOf('!'));
|
-> 1) valueOf 메소드를 이용해 전달된 데이터를 String 인스턴스로 변환
2) concat 메소드로 결합
...+ 연산이라고 무작정 concat 메소드부터 호출되는 것이 아니다!
+ 연산이 많이 이루어질 경우 String 인스턴스 생성 횟수가 너무 많아지는것 아닌가???
=> 문자열 결합 최적화를 통해 해결 ... String 인스턴스를 최대 2개만 생성해도 가능!
... StringBuilder 이용
ex)
주어진 문자열
String str = 11 + "Hello" + 22;
|
이렇게 변환됨
String str = new StringBuilder().append(11).append("Hello").append(22).toString();
|
(진행과정)
① StringBuilder 인스턴스가 생성
② append 메소드로 11을 문자형 데이터로 추가
③ Hello 추가
④ 22 추가
⑤ StringBuilder 인스턴스를 String 인스턴스로 만들기 위해 toString메소드 사용
toString 메소드 내부에서 만들어진 String인스턴스(1개) 를 str 로 참조값 반환하며
String 인스턴스 str(2개) 생성
=> 이렇게 String 인스턴스를 최대 2개만 생성하고도 가능하다!
댓글 없음 :
댓글 쓰기