StringBuffer는 append()를 할 때, 자신의 주소를 반환하고 변경된 문자열도 같은 주소값을 가지기 때문에 저장된 문자열을 변경할 수 있다.
StringBuffer 인스턴스가 생성될 때, 지정한 버퍼의 길이만큼 char[]
배열이 생성되어 문자를 저장하는 공간으로 활용된다.
버퍼의 길이가 작업하려는 문자열의 길이보다 작으면 내부적으로 버퍼의 길이를 늘리는 작업을 수행한다
새로운 배열생성 -> 기존 배열의 내용복사 -> 주소값 변경
StringBuffer는 String클래스처럼 equals()메서드를 오버라이딩 하지 않았기 때문에 StringBuffer에 담긴 문자열을 비교하기 위해서는 toString으로 문자열로 바꾼 후, equals()로 비교해야 한다.
append()로 저장할 때 들어온 타입에 관계없이 모두 문자열로 변환하여 저장한다.
StringBuffer는 멀티 쓰레드에 안전하도록 동기화 되어 있다. 따라서 멀티 쓰레드가 아니라면 StringBuilder
를 사용한다. 기능은 완전 동일
래퍼 클래스를 사용하면 기본형을 객체로 다룰 수 있다. 래퍼 클래스의 생성자는 매개변수로 각 자료형의 값들을 인자로 받는다.
래퍼 클래스들은 모두 equals()가 오버라이딩 되어 있어서 가지고 있는 값을 비교한다.
toString()도 오버라이딩되어 있어서 문자열로 변환도 가능하다.
parse()
는 반환값이 기본형이고, valueOf()
는 반환값이 래퍼 클래스타입이다.int i = Integer.parseInt("200");
Integer i = Integer.valueOf("200");