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