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 i = 1;
String num = i + "";
String num = String.valueOf(i); // 더 빠름
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 str = new StringBuffer("문자");
StringBuffer str = new StringBuffer(정수); // 크기 지정도 가능
buffer와 사용방법은 똑같다 buffer에 동기화만 빠진거라 생각하면 된다