2016-04-01

문자열에서의 + 연산


 문자열에서 + 연산은 컴파일러의 적절한 메소드 호출을 통해 이루어진다.

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개만 생성하고도 가능하다!



댓글 없음 :

댓글 쓰기