String str1=new String("abc"); //인스턴스로 생성됨
String str2="abc" //상수풀에 있는 문자열을 가리킴
package string;
public class StringTest {
public static void main(String[] args) {
//new로 하면 힙메모리에 있는 문자열 선언
String str1=new String("abc");
String str2=new String("abc");
//메모리의 위치가 다르므로 false
System.out.println(str1 == str2);
//상수풀에 있는 문자열 선언하게 되면 true
String str3="abc";
String str4="abc";
System.out.println(str3 == str4);
}
}
package string;
public class StringTest2 {
public static void main(String[] args) {
String java=new String("java");
String android=new String("android");
System.out.println(System.identityHashCode(java));
//concat메서드는 java와 android객체의 문자열을 연결시키는 역할을한다.
//javaandroid 연결된 문자열은 메모리가 다름
java=java.concat(android);
System.out.println(java);
//나뉘어진 문자열과 연결된 문자열은 메모리값이 다름
System.out.println(System.identityHashCode(java));
}
}
package string;
public class StringBuilderTest {
public static void main(String[] args) {
String java=new String("java");
String android=new String("android");
//java문자열을 기반으로 stringbuilder형성
StringBuilder buffer=new StringBuilder(java);
System.out.println(System.identityHashCode(buffer));
//buffer.append(android); 도 가능
//append로 java와 android연결
buffer.append("android");
System.out.println(System.identityHashCode(buffer));
//메모리값 동일
java=buffer.toString();
}
}
기본 자료형에 대한 클래스