2018년 4월 14일 토요일

JAVA에서 String

String 관련 개념

  • String 변수명 = 문자 : 형식으로 구현하면 상수풀에서 관리되서 같은 문자면 주소값이 같다.
  • new String(문자) 형식으로 같은 문자를 넣고 구현하면 힙객체에서 관리되서 선언할때마다 주소값이 다르다.
  • 문자열 끼리 더하면 append 함수를 많이 사용하므로 성능에 좋지 않아 StringBuffer 버퍼를 사용해서 구현한다.
  • StringBuffer 동기화를 지원하고 StringBuilder는 동기화를 지원 하지 않는다. 제공하는 메소드는 같다.
  • 문자를열을 더할때 매번 String 인스턴스를 생성하는 방식에서 Jdk 1.5버전 부터는 컴파일단계에서 내부적으로 new StringBuilder()의 append함수를 통해 더한다.
public class stringTest {

    public static void main(String[] args) {
        String str1 = "hello"; //상수풀 영역에 저장

        String str2 = "he";
        String str3 = "llo";

        String str4 = str2 + str3;

        String str5 = "he" + "llo";

        String str6 = "he" + "llo" + "hi";

        if(str1 == str4){ //변수를 통해 더하면 힙에 생성된다
            System.out.println("str1 == str4");
        }else{
            System.out.println("str1 != str4");
        }

        if(str1 == str5){ //문자열로 더하는 방식은 상수풀에서 관리해서 존재하는 것을 사용한다
            System.out.println("str1 == str5");
        }else{
            System.out.println("str1 != str5");
        }

        if(str1 == str6){
            System.out.println("str1 == str6");
        }else{
            System.out.println("str1 != str6");
        }

        // '+' 연산자를 많이 사용할때는 아래와 같이 StringBuffer를 사용해서 처리한다
        StringBuffer sb = new StringBuffer();
        sb.append("select id from test ");
        sb.append("where name like '%kim%'");
        String sql = sb.toString();
        
    }

}
Share:

0 개의 댓글:

댓글 쓰기