String 클래스 와 StringBuffer 클래스

김예지·2022년 12월 29일
0

String 클래스에는 문자열을 저장하기 위해서 문자형 배열 참조변수(char[]) value를 인스턴스 변수로 정의해놓고 있다. 인스턴스 생성 시 생성자의 매개변수로 입력받는 문자열은 이 인스턴스변수에 문자열 배열(char[])로 저장되는 것이다

문자열 간의 결합이나 추출 등 문자열을 다루는 작업이 많이 필요한 경우에는 String 클래스 대신 StringBuffer클래스를 사용하는 것이 좋다 StringBuffer인스턴스에 저장도니 문자열은 변경이 가능하므로 하나의 StringBuffer인스턴스로도 문자열을 다루는 것이 가능하다

문자열은 new 연산자를 통하여 메모리 할당이 되기 때문에 == 로 비교하기 보단 equals()로 비교해야 한다

String str = "a";
String str2 = "a"; // 문자열 리터럴이 존재할 시 재사용을 한다
String str = new String("a");
String str2 = new String("a"); // 재사용 하지 않는다 그러므로 == 로 비교하게 되면 주소가 달라 false 가 출력이 된다

int to String

int i = 1;
String num = i + "";
String num = String.valueOf(i); // 더 빠름

String to int

int i = Integer.paseInt("100");
int i = Integer.valueOf("100");
int i = Integer.valueOf("100" , 10); // 여기서 10은 10진수를 의미
int i = Integer.valueOf("100".trim()); // 양쪽에 공백이 있으면 예외가 발생 할 수 있기 때문에 trim()메소드를 습관적으로 사용하기도 한다

StringBuffer

  • String 클래스는 변경이 불가능 하지만 buffer은 문자열 편집이 가능하다
  • buffer은 비교 할 때 toString()으로 변환후 비교해줘야 한다 (equals()를 오버라이딩 하지 않아서 == 로 비교됨 String은 오버라이딩이 되어있다)

StringBuffer str = new StringBuffer("문자");
StringBuffer str = new StringBuffer(정수); // 크기 지정도 가능

StringBuilder

buffer와 사용방법은 똑같다 buffer에 동기화만 빠진거라 생각하면 된다

profile
나만의 방식을 찾아가는 신입신입 개발자

0개의 댓글