[자바7]숫자와 날짜


1.float과 doulbe 값을 정수로 반올림하기
- java.lang.Math의 round() 메서드를 사용림여 반올림
- double : round()
2.doulbe과 long 타입의 십진수를 형식화하기
- DecimalFormat 클래스를 사용하여 숫자를 형식화

3.int 값 비교
- 비교 연산자 사용 : ==(같다), !=(같지 않다), >(크다), <(작다), >=(크거나 같다), <=(작거나 같다)
- 자바7에서 추가된 Integer.compare(int1, int2) 메서드 사용 : int1 < int2 => -1, int1 > int2 => 1,  int1 =int2 => 0

4. 실수 비교하기
- Float 객체의 compareTo() 메서드를 사용 : float1.compareTo(float2) : float1 > float2 => 1, float1 < float2 => -1, float1 = float2 =>0
- jaav.lang.Float 클래스의 compare() 메서드를 사용 : Float.compare(float1, float2) : float1 > float2 => 1, float1 < float2 => -1, float1 = float2 =>0

5. 복소수 계산하기
- 아파치 커먼스 매스 라이브러리의 Complex(복소수) 클래스를 사용
6. 복소수 형식화와 파싱
- 아파치 커먼스 매스 라이브러리의 ComplexFormat 클래스를 사용

7. 통화 계산하기
- BigDecimal 데이터 타입을 사용하여 통화 값을 계산 및 계산 결과는 보조 메서드 NumberFormat.getCurrencyInstance()을 사용하여 형식화
※ BigDecimal 클래스의 가장 유용한 기능은 반올림을 자유자재로 처리하는 부분 때문에, 통화를 다루는데 적합하다.
   but, BigDecimal을 사용하여 성능이 저하 됟수 있으므로, 대안으로는 Math.round()를 사용하여 기본적인 반올림 처리하는 편이 나을 수도 있음.
- BigDecimal의 산술 메서드
add() : 덧셈
subtract() : 뺄셈
multiply() : 곱셈
abs() : 절대값
pow(n) :거듭제곱

       - 필요한 계산 수행 후 BigDecimal 객체의 doubleValue() 메서드를 호출하여 double로 변환값을 얻고, NumberFormat 클래스를 사용하여 이 double값을 
         통화 형식에 맞게 변환할 수 있음.

8. 난수 생성하기
- java.util.Random 클래스를 사용하여 난수 생성
- Math.random() 메서드를 사용하여 난수 생성 : 0.0보다 크고 1.0보다 작은 double값을 만듦
※암호에 사용할 수 있을 정도로 안전한 Random 객체가 필요하다면 SecureRandom을 생각해 볼 수 있음.
 java.util.Random 클래스는 48비트 시드로 부터 의사난수 수열을 생성 vs java.secutiry.SecureRandom 클래스는 최대 128비트 시드로 ~.
※ Random 클래스가 생성하는 난수는 어떤 한 값을 알아내면 이후에 생성되는 모든 값을 알아낼 수 있으므로, 암호화를 위해서는 Random 클래스를 사용하는 것은 안전하지 않음.
9. 현재 날짜 수하기
- java.util.Date 클래스
- 더 정교한 처리를 해야 할 경우는 java.util.Calendar 클래스를 사용
Calender의 달은 0부터 시작하는 인덱스여서 1월이 0에 해당
10. 년, 월, 일 더하고 빼기
- java.util.Canlender 사용.
Canlendar의 add()메서드로 날짜를 쉽게 더하고 뺄 수 있음.(두번째 인자에 양수를 전달하면 덧셈, 음수를 전달하면 뺄셈)
11. 두 날짜의 차이 구하기
- java.util.concurrnet.TimeUnit 열거형을 사용하여 주어진 날짜 같의 차이를 계산
12. 날짜를 표시하려고 형식화하기
- java.util.Calender 클래스로 필요한 날짜를 구한 후 java.textSimpleDateFormat 클래스로 형식화.
cf. 패턴을 전달 하지 않고 SimpleDateFormat 인스턴스를 생성한 뒤 applyPattern() 메서드로 패턴을 적용할 수도 있음.
    applyPattern() 메서드느느 이미 생성된 SimpleDateFormat 객체의 패턴을 바꾸고 싶을 때 유용.
13. 날짜 비교하기
- 어떤 날짜가 더 큰지(더 뒤의 날짜) 확인하려면 java.util.Calendar에 있는 비교 메서드를 사용.
compareTo() : 0(같음), 1(메서드가 호출된 객체가 인자보다 큼), -1(메서드가 호출된 객체가 인자보다 작음)
cf. after()메서드와 before() 메서드도 날짜 비교 메서드임.
14. 숫자 리터럴의 가독성 높이기
- 큰 숫자에 사이에 쉼표가 들어가거나, 소수 사이에 밑줄을 넣어 가독성을 높임.
15. 이진수 리터럴 선언하기
- JDK 7부터 자바 언어에 이진수 리터럴이 추가 되었음. 바이트와 short, int, long 타입의 값을 이진수로 표현 가능.
  이진수 리터럴을 선언하려면 숫자 앞에 0B나 0b를 붙이기만 하면 됨.

댓글