본문 바로가기
Kosta DevOps 과정 280기/Java

문자열 처리

by 롯슈83 2024. 5. 28.
  • String
    • 변하지 않는 문자열(immutable)
    • 원래 String 은 참조 자료형이다. 따라서 new String 처럼 사용해야한다. 그러나 문자열은 다른 것들보다 훨씬 더 많이 사용하는 참조 자료형이기 떄문에 마치 기본자료형처럼 쓰는것을 허용한다.
    • +연산 등을 사용할 경우 새 객체가 생성되고 참조 변수는 그 곳을 참조하게 된다. 그 이후 다른 참조변수가 참조하지 않고 있을 경우에는 가비지 컬렉터에 의해 원래 문자열은 지워진다.
      • 가비지 컬렉션이 계속 반복될 경우 성능이 떨어질 수 있다. 따라서 계속 데이터를 변경해야 하는 경우 String 보다는 StringBuffer 또는 StringBuilder 를 사용하는 것이 좋다.
package com.kosta.exam00;

//원래 String 은 참조 자료형이다. 따라서 new String 처럼 사용해야한다. 그러나 문자열은 다른 것들보다 훨씬 더 많이 사용하는 참조 자료형이기 떄문에 마치 기본자료형처럼 쓰는것을 허용한다.
public class StringTest {
	public static void main(String[] args) {
		String data = new String("hello ");
		
		data += "java";
		System.out.println(data);
	}
}
  • StringBuffer
    • 변하는 문자열
    • String 을 가지고, StringBuffer를 생성할 수도 있다. 
    • append(), insert(), offset()
    • append()등의 함수를 사용하여 연산을 해도 해당 객체는 메모리에서의 위치를 유지한다. 즉 새 객체가 생성되지 않고 기존의 객체가 변화한다.
package com.kosta.exam00;

public class StringBufferTest {

	public static void main(String[] args) {
		StringBuffer sb = new StringBuffer("hello");
		System.out.println(sb);
		sb.append(" java");
		System.out.println(sb);
	}
}
  • StringBuilder
    • StringBuffer와 유사하다.
  • String 과 String Builder
    • 변하는 문자열 처리에는 String Builder 가 좋으나, 문자열 처리는 보통 String 을 상대한다. 그러면 메소드를 태우기 위해서는 String 으로 바꿔서 가는게 좋다.
    • 메소드는 toString 을 이용한다.
package com.kosta.exam00;

public class StringAndStringBuffer {
	public static void pro(String data) {
		System.out.println(data+"를 처리하였습니다.");
	}
	public static void main(String[] args) {
		StringBuffer cmd = new StringBuffer();
		cmd.append("사과 ");
		cmd.append("포도 ");
		cmd.append("수박 ");
		
		System.out.println(cmd);
		//pro(cmd)//불가
		pro(cmd.toString());
	}

}

'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글

멀티스레드-2  (0) 2024.05.30
예외 처리  (0) 2024.05.28
정규표현식  (0) 2024.05.27
문자열  (0) 2024.05.27
파일 입출력  (0) 2024.05.24