2014년 2월 15일 토요일

[자바교육]JAVA String교육 Tip(자바문자열더하기+,자바스트링, String, StringBuilder) 자바의 String은 그 자체가 변할 수 없는 객체이다. 자바의 String...

[자바교육]JAVA String교육 Tip(자바문자열더하기+,자바스트링, String, StringBuilder)   자바의 String은 그 자체가 변할 수 없는 객체이다.    자바의 String...
 
자바의 String은 그 자체가 변할 수 없는 객체이다. 즉 메모리에 할당된 후 값자체를 바꿀 수 없는 것이다. 우리가 문자열에 + 연산등을 하면 북시적으로 StringBuilder를 통해 새로은 메모리 공간을 할당받고 문자열을 더하는 내부 연산을 하게 되는 데...
 
아래의 예를 보자.
 
String onj = "oraclejava커뮤니티";
onj += "만세";
 
라는 코딩이 있을 때 자바컴파일러는 내부적으로 다음과 같은 코드를 생성한다.
 
String onj = "oraclejava커뮤니티";
StringBuiler temp = new StringBuilder(onj);
temp.append("만세");
onj = temp.toString();
 
이방법은 문자열을 더하기 위해 새로운 메모리를 할당 받아야 하므로 좋은 방법이 아니다.
즉 다음과 같이 고쳐서 코딩을 하는것이 좋을 듯 하다.
 
StringBuilder onj = new StringBuilder("oraclejava커뮤니티");
onj.append("만세");

이번에는 다음과 같은 코드를 보자.
 
public String onj1() {
 return "오엔제이1";
}
 
public String onj2() {
 return "오엔제이2";
}

String oraclejava = onj1() + "oraclejava1";
oraclejava += onj2();
System.out.println("결과 = " + oraclejava);
 
위와 같은 코드는 총5개의 추가적인 StringBuilder Object를 생산하게 된다.

onj1(), onj2(), onj1() + "oraclejava1", oraclejava += onj2(), "결과 = " + oraclejava
총5개이다.
 
성능을 생각한다면 아래와 같은 방법으로 하는것이 좋을 듯 하다.
 
StringBuilder sb = new StringBuilder("결과 = ");
sb.append(onj1()).append("oraclejava1").append(onj2());
System.out.println(sb);
 
참고하세요~~

댓글 없음:

댓글 쓰기