JAVA/자바의 정석

[자바의 정석 - 기초편] 9. (4) StringBuilder / Math클래스 / wrapper클래스 / Number클래스 / 오토박싱 & 언박싱

서영22 2023. 12. 6. 03:23

 StringBuilder 

- StringBuffer : 동기화 O ➔ 멀티 쓰레드에 안전  /  StringBuilder : 동기화 X

 

- 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능 저하됨 ➔ 이럴 때는 StringBuilder 사용해야 성능 향상

 

 

 

 Math클래스 

수학관련 static메서드의 집합

 

Ex) round() : 소수점 아래 첫번째 자리에서 반올림

 

 

 

 

 Math클래스의 메서드 

 

 

 

 래퍼(wrapper) 클래스 

8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스 (기본형을 감싸는 클래스)

 

public final class Integer extends Number implements Comparable {
        ...
        private int value// 기본형 int를 감싸고 있음
        ...
}

 

 

 

< 예제 >

 

 

 

 

 Number 클래스 

모든 숫자 래퍼 클래스의 조상

 

- 숫자 래퍼 클래스 : Byte, Short, Integer, Long, Float, Double, BigInteger(long보다 큰), BigDecimal(double보다 큰)

 

 

 

 문자열을 숫자로 변환하기 

- 문자열 ➔ 숫자

1. int i   = new Integer("100").intValue();   // floatValue(), longValue()...
2. int i2 = Integer.parseInt("100");   // 주로 이 방법을 많이 사용
3. Int i3 = Integer.valueOf("100");

 

 

 

- n진법의 문자열 ➔ 숫자

int i4 = Integer.parseInt("100", 2);    // 100(2)   →  4      (2진수)
int i5 = Integer.parseInt("100", 8);    // 100(8)   →  64    (8진수)
int i6 = Integer.parseInt("100", 16);  // 100(16) →  256  (16진수)
int i7 = Integer.parseInt("FF", 16);   // FF(16)  →  255  (16진수)
int i8 = Integer.parseInt("FF");         // NumberFormatException 발생 (안쓰면 10생략인데 10진수에 FF없음)

 

 

 

 오토박싱 (Auto boxing) &언박싱 (unboxing) 

- 오토박싱 : int(기본형) ➔ Integer(래퍼클래스-객체)

 

- 언박싱 : Integer(래퍼클래스-객체)  int(기본형) 

 

ArrayList<Integer> list = new ArrayList<Integer>();

list.add(10);                // 오토박싱.  10 → new Integer(10)
int value = list.get(0)  // 언박싱.  new Integer(10) → 10   (list에 저장된 첫번째 객체를 꺼낸다)

 

 

 

 

< 예제 1 >

 

 

 

< 예제 2 >