Day 44

ChangWoo·2023년 5월 19일
0

자바의 정석

목록 보기
44/71
post-thumbnail

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 = 아주 큰 실수
  • 래퍼 객체가 가지고 있는 값을 기본형으로 바꿔주는 메서드들을 가지고 있다.
profile
한 걸음 한 걸음 나아가는 개발자

0개의 댓글