[JAVA][패스트캠퍼스]String,Wrapper클래스

김주현·2021년 4월 30일
0

String클래스 선언하기

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);
	}
}

String은 immutable(불변)

  • 한번 선언되거나 생성된 문자열을 변경할 수 없음
  • String클래스의 concat()메서드 혹은 "+"를 이용하여 String을 연결하는 경우 문자열은 새로 생성됨
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));
	}
}

StringBuilder와 StringBuffer

  • 가변적인 char[]배열을 멤버변수라 가지고 있는 클래스
  • 문자열을 변경하거나 연결하는 경우 사용하는 편리한 클래스
  • StringBuffer는 멀티 쓰레드프로그래밍에서 동기화(Synchronization)이 보장됨
  • 단일 쓰레드 프로그래밍에서는 StringBuilder를 사용하는것이 더 좋음
  • toString()메서드로 String반환
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();
	}
}

Wrapper 클래스

기본 자료형에 대한 클래스

0개의 댓글