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();
}
}
0 개의 댓글:
댓글 쓰기