JAVA

String 클래스

Stater 2019. 10. 5. 20:35

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));
		java =java.concat(android);
		
		System.out.println(java);
		//새로운 생성된 문자열을 가르킨다.
		//이렇게 메모리상의 해쉬코드 값이 달라지므로 연결해서 사용 할 경우에는
		//StringBuilder 과 StringBuffer을 사용한다.
		System.out.println(System.identityHashCode(java));
		
		

	}

}

- StringBuilder  StringBuffer(F1 눌러서 확인-> final/abstract 부분이 다르다)

가변적인 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");
		//identiy 값이 동일 
		StringBuilder buffer = new StringBuilder(java);
		System.out.println(System.identityHashCode(buffer));
		buffer.append("android");
		System.out.println(System.identityHashCode(buffer));
		
		java = buffer.toString();
	}

}

 

반응형

'JAVA' 카테고리의 다른 글

List 인터페이스  (0) 2019.10.08
제네릭  (0) 2019.10.07
컬렉션 프레임워크(Collection Framework)  (0) 2019.10.06
Object 클래스  (0) 2019.10.04
인터페이스(Interface)  (0) 2019.10.02