StringBuffer, Math, wrapper

chas369·2022년 11월 24일
0

1. StringBuffer

  1. StringBuffer는 append()를 할 때, 자신의 주소를 반환하고 변경된 문자열도 같은 주소값을 가지기 때문에 저장된 문자열을 변경할 수 있다.

  2. StringBuffer 인스턴스가 생성될 때, 지정한 버퍼의 길이만큼 char[] 배열이 생성되어 문자를 저장하는 공간으로 활용된다.

  3. 버퍼의 길이가 작업하려는 문자열의 길이보다 작으면 내부적으로 버퍼의 길이를 늘리는 작업을 수행한다
    새로운 배열생성 -> 기존 배열의 내용복사 -> 주소값 변경

  4. StringBuffer는 String클래스처럼 equals()메서드를 오버라이딩 하지 않았기 때문에 StringBuffer에 담긴 문자열을 비교하기 위해서는 toString으로 문자열로 바꾼 후, equals()로 비교해야 한다.

  5. append()로 저장할 때 들어온 타입에 관계없이 모두 문자열로 변환하여 저장한다.

  6. StringBuffer는 멀티 쓰레드에 안전하도록 동기화 되어 있다. 따라서 멀티 쓰레드가 아니라면 StringBuilder를 사용한다. 기능은 완전 동일

2. Math

  • Math클래스는 인스턴스를 생성하지 못하기 때문에 클래스 변수로 사용한다. Math의 모든 메서드는 static이다.

3. wrapper

  • 8개의 기본형 변수도 상황에 따라 객체로 다뤄야 하는 경우가 있다.
    • 기본형 값이 아닌 객체로 저장해야 할 때
    • 매개변수로 객체를 요구할 때
    • 객체간의 비교가 필요할 때 등
  1. 래퍼 클래스를 사용하면 기본형을 객체로 다룰 수 있다. 래퍼 클래스의 생성자는 매개변수로 각 자료형의 값들을 인자로 받는다.

  2. 래퍼 클래스들은 모두 equals()가 오버라이딩 되어 있어서 가지고 있는 값을 비교한다.

  3. toString()도 오버라이딩되어 있어서 문자열로 변환도 가능하다.

4. parse(), valueOf()

  • parse()는 반환값이 기본형이고, valueOf()는 반환값이 래퍼 클래스타입이다.
int i = Integer.parseInt("200");
Integer i = Integer.valueOf("200");

0개의 댓글