Language/Java2012/03/12 23:51
코드상에서 스트링 합치기를 해도 컴파일러가 자동적으로 StringBuilder 형식으로 변경하여 컴파일

#예제
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 시킴 
저작자 표시 비영리 동일 조건 변경 허락
Posted by 농부건우
2012/02/29 09:55



지금까지 잘 모르던 JVM 관련 내용을 공부할 수 있게 도와주는 책
어려운 내용도 많고 하지만 한 번은 꼭 읽어 봐야 할 책

1장 Java란 무엇인가.key
View more presentations from 김 한도












저작자 표시 비영리 동일 조건 변경 허락
Posted by 농부건우
미분류2011/12/14 16:11

저작자 표시 비영리 동일 조건 변경 허락
Posted by 농부건우
2011/11/06 21:52

[이미지 출처는 강컴]

예전에 사놓고, 읽다 안읽다가 이제야 완료!
읽다 보면 읽히지 않는 부분도 있지만(동시성, 직렬화 등) 모두 읽음!!!!
개인적인 생각으로는 자바 개발자라면 한 번은 꼭 읽으면 좋은 책인것 같음
100% 이해는 못했지만 차후에 다시 한 번 읽어야 할 것 같은 책
 
저작자 표시 비영리 동일 조건 변경 허락
Posted by 농부건우
2011/10/11 00:27
원본 : http://health20.kr/2192




저작자 표시 비영리 동일 조건 변경 허락
Posted by 농부건우