ch 9-21~24 String Builder, Math클래스
StringBuilder
- StirngBuffer는 동기화되어 있다. 멀티 쓰레드에 안전(thread-safe)
- 싱글 쓰레드 : 한번에 1개 작업 (동시작업 불가 / 데이터 공유X)
- 멀티 쓰레드 : 한번에 n개 작업 (동시작업 가능 / 데이터 공유)
- 멀티 쓰레드는 데이터 공유가 가능하므로 다른 사람과 작업이 겹칠 수 있다. 그래서 StringBuffer는 동기화를 통해 데이터를 보호한다.
- 멀티 쓰레드 프로그램이 아닌 경우(싱글 쓰레드인 경우), 동기화는 불필요한 성능저하! 이럴 땐 StringBuffer 대신StringBuilder를 사용하면 성능 향상!
< 멀티 쓰레드 > < 싱글 쓰레드 >
StringBuffer sb; StringBuilder sb;
sb = new StringBuffer(); <----> sb = new StringBuilder();
sb.append("abc"); sb.append("abc");
Math클래스
- 수학관련 static메서드의 집합 (iv가 없으므로)
public static final double E = 2.7182818284590452354; // 자연로그의 밑
public static final double PI = 3.14159265358979323846; // 원주율
- round()로 원하는 소수점 아래 세 번째 자리에서 반올림하기
1. 원래 값에 100을 곱한다.
90.7552 * 100 -> 9075.52
2. 위의 결과에 Math.round()를 사용한다.
Math.round(9075.52) -> 9076 (소수점 아래 첫자리에서 반올림)
3. 위의 결과를 다시 100.0으로 나눈다. (실수 float이나 double로 나눠야 한다.)
9076 / 100.0 -> 90.76
9076 / 100 -> 90
Math클래스의 메서드 (1/2)
- abs = absolute : 절대값을 반환한다. (양수->양수 / 음수->양수)
- ceil : 올림
- floor : 내림
- max : 두 값을 비교하여 큰 쪽 반환
Math클래스의 메서드 (2/2)
- min : 두 값을 비교하여 작은 쪽 반환
- random : 0.0 ~ 1.0 범위의 임의의 double 값을 반환
- rint : 반올림 (짝수반올림(roundeven) / 반올림해서 무조건 짝수로 만든다.)
- round : 반올림 (일반 반올림)
- 반올림에도 여러 종류가 있다. (HALF-UP / HALF-DOWN / EVEN)
ch 9-25~27 래퍼 클래스, Number 클래스
래퍼(wrawpper) 클래스
- 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스.
- 기본형 값을 감싸는 클래스
- 기본형 = 객체가 아닌데, 이를 감싸기(객체로 사용하기) 위해 사용하는 클래스
public final class Integer extends Number implements Comparable {
...
private int value; // 기본형 int를 감싸고 있다.
...
}
- char과 float를 제외하고는 기본형의 첫 글자를 소문자에서 대문자로 바꾼것이다.
- 기본형 = 직접 접근 가능 / 참조형 = 직접 접근 불가능
래퍼(wrapper) 클래스 - 예제
- Integer 100의 값을 갖는 i와 i2를 생성
- i==i2 -> 주소값을 배교했을 때 다르므로 false
- i.equals(i2) -> 각각의 값을 비교했을 때 같으므로 true(오버라이딩)
- compareTo -> 두 값이 같으면 0, 오른쪽 값이 작으면 양수 / 오른쪽 값이 크면 음수를 반환
- toString -> i를 문자열로 변경해서 출력
- Integer.MAX_VALUE : 20억
- Integer.MIN_VALUE : -20억
- Integer.SIZE : 32bit
- Integer.BYTES : 4byte
- Integer.TYPE : int
- Integer는 int 타입이지만, 타입의 크기, 최대값, 최소값 등 기본적인 정보들도 가지고 있다.
(다른 wrapper 클래스도 동일하다.)
Number 클래스
- 모든 숫자 래퍼 클래스의 조상
- Long = 10의 19제곱
- Double = 10의 308제곱
- BigInteger = 아주 큰 정수
- BigDecimal = 아주 큰 실수
- 래퍼 객체가 가지고 있는 값을 기본형으로 바꿔주는 메서드들을 가지고 있다.