코드상에서 스트링 합치기를 해도 컴파일러가 자동적으로 StringBuilder 형식으로 변경하여 컴파일
#예제
#디컴파일(jad)
StringBuffer 객체의 append 안에서 문자열을 합치면 컴파일러가 굉장히 똑똑하게 append 처리 할까? 아니면 새로운 객체를 만들어서 처리 할 까 궁금하여 테스트
#테스트 코드
#디컴파일
jad 로 디컴파일한 결과를 보면 기존에 만든 Buffer 에 append 하는 것이 아니라 새로운 객체를 만들어서 append 후 해당 객체를 다시 append 시킴
#예제
public class Imsi01 {
public static void main(String[] args) {
long start = 0l;
long end = 0l;
String s1 = "s1";
String s2 = "s2";
System.out.println( s1 + s2 );
}
} #디컴파일(jad)
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: Imsi01.java
import java.io.PrintStream;
public class Imsi01
{
public Imsi01()
{
}
public static void main(String args[])
{
long l = 0L;
long l1 = 0L;
String s = "s1";
String s1 = "s2";
System.out.println((new StringBuilder()).append(s).append(s1).toString());
}
}StringBuffer 객체의 append 안에서 문자열을 합치면 컴파일러가 굉장히 똑똑하게 append 처리 할까? 아니면 새로운 객체를 만들어서 처리 할 까 궁금하여 테스트
#테스트 코드
public class Imsi {
public static void main(String[] args) {
long start = 0l;
long end = 0l;
String s1 = "s1";
String s2 = "s2";
StringBuilder buffer = new StringBuilder();
buffer.append( s1 + s2 );
System.out.println( buffer.toString() );
}
}#디컴파일
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: Imsi.java
import java.io.PrintStream;
public class Imsi
{
public Imsi()
{
}
public static void main(String args[])
{
long l = 0L;
long l1 = 0L;
String s = "s1";
String s1 = "s2";
StringBuilder stringbuffer = new StringBuilder();
stringbuffer.append((new StringBuilder()).append(s).append(s1).toString());
System.out.println(stringbuffer.toString());
}
}
jad 로 디컴파일한 결과를 보면 기존에 만든 Buffer 에 append 하는 것이 아니라 새로운 객체를 만들어서 append 후 해당 객체를 다시 append 시킴