본문 바로가기
멀티캠퍼스 풀스택 과정/Java의 정석

자바의 정석6-3 Math클래스, Rapper클래스, Number클래스

by 이쟝 2022. 1. 7.

Math클래스

- 수학 관련 static메서드의 집합(객체를 만들 필요 xx)

- Math클래스의 메서드는 모두 static이고, 아래와 같이 2개의 상수만 정의해 놓음

 

대표적인 두개의 상수 E와 PI

올림, 버림, 반올림

- 원하는 자리 수에서 반올림된 값을 얻기 위해서는 간단히 10n제곱으로 곱한 후, 반올림 한뒤에 다시 곱한 수로 나눠주기만 하면 된다.

- round( )로 원하는 소수점 아래 세 번째 자리에서 반올림하기

 

int 형을 int형으로 나누면 = int, int형을 float형으로 나누면 = float


Math클래스의 메서드

 

 

더보기
더보기

절대값: 양수 -> 양수, 음수 -> 양수

올림 -> 더 큰 숫자, 버림 -> 더 작은 숫자

max -> 둘 중에 큰 거 반환, min -> 둘 중에 작은 거 반환

 

 

더보기
더보기

rint(짝수 반올림(round even): 반올림해서 짝수 만들기), round 일반 반올림!

-> 반올림도 여러 종류가 있음

- round even은 앞에 홀수일 땐 올림을 하고 짝수일 땐 내림을 함(일반 반올림에 비해 오차가 더 적음)

 


래퍼(wrapper)클래스

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

-> 기본형은 참조형이 아니기 때문에 객체가 아님!(기본형은 객체로 만들어야 사용할 수 있음)

 

- 자바는 객체지향언어이기 때문에  모든 것이 객체여서 기본형은 객체가 아니니까 존재하면 안됨

- 기본형이 있는 이유는? 성능때문에! 참조형은 객체를 생성하고 참조변수를 통해서만 값을 읽을 수 있어서 시간이 걸리는데 기본형은 바로 값을 불러올 수 있으니까! ex) int i = 10; (기본형), Integer i2 = new Integer(“100”); (참조형) 100의 값이 있는 주소를 참조변수가 저장해서 불러올 수 있음

 

int 형의 래퍼 클래스인 Integer클래스의 실제코드

 

-> char, int형을 제외한 나머지는 이름의 첫 글자를 대문자로 바꿔 주기만 하면 된다.


예제

 

Integer i = new Integer(100);
Integer i2 = new Integer(100);

System.out.println("i == i2 ? " + (i == i2));  
// i와 i2는 서로 다른 객체가 생성되어있기 때문에 대입연산자는 주소값을 비교되어서 false 반환
		
System.out.println("i.equals(i2) ? " + (i.equals(i2))); 
// 래퍼클래스들은 equals가 오버라이딩 되어있어서 주소값이 아닌 내용으로 비교되어서 true 반환
		
System.out.println("i.compareTo(i2) ? " + (i.compareTo(i2)));
// compareTo는 같으면 0, 오른쪽이 크면 음수, 오른쪽이 작으면 양수
		
System.out.println("i.toString()=" + i.toString());
// i를 문자열로 바꿔서 출력
		
// Integer의 상수값들
System.out.println("MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println("MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("SIZE=" + Integer.SIZE);
System.out.println("BYTES=" + Integer.BYTES);
System.out.println("TYPES=" + Integer.TYPE);

Number클래스

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

- BigInteger(아주 큰 정수), BigDecimal(아주 큰 실수)

- Long으로도 다룰 수 없는 큰 범위의 정수-> BigInteger, Double로도 다룰 수 없는 큰범위의실수 -> BigDecimal

 

Number클래스의 코드

 

-> 추상클래스이면서 래퍼객체를 기본형으로 바꿀 때 쓰는 메서드를 가지고 있음

new Integer(100) -> 100(int)으로 바꾸려면 intValue( )메서드를 사용! Integer -> int


문자열과 숫자변환

1) 문자열을 숫자로 변환하는 다양한 방법

(1) 래퍼클래스의 객체를 기본형(int)으로 변환!(intValue 메서드 사용)

(2) parseInt를 사용해 문자열 -> 숫자로

(3) valueOf를 사용해 문자열 -> 숫자로 Integer i3 대신에 int i3도 가능

 

문자열 -> 기본형 문자열 -> 래퍼 클래스
byte b = Byte.parseByte(“100”); byte b = Byte.valueOf(“100”);
(byte b = new Byte(“100”);와 같음)
short s = Short.parseShort(“100”); short s = Short.valueOf(“100”);
int i = Integer.parseInt(“100”); int i = Integer.valueOf(“100”);
long l = Long.parseLong(“100”); long l = Long.valueOf(“100”);
float f = Float.parseFloat(“3.14”); float f = Float.valueOf(“3.14”);
double d = Double.parseDouble(“3.14”); double d = Double.valueOf(“3.14”);
+ 래퍼클래스의 이름.valueOf(“ “) -> (3)번처럼  

 

- 래퍼클래스 -> 문자열: toString( ) 사용!

문자열 -> 래퍼클래스 래퍼클래스 -> 문자열: toString( )사용
Byte b = new Byte(“100”); String str = b.toString( );

 

2) n진법의 문자열을 숫자로 변환하는 방법

 

- parseInt10진수 변환/ 2, 8, 16 -> 2진수, 8진수, 16진수

- 문자열 뒤에 진수를 안 써주게 되면 자동적으로 10진수가 생략됐다는 의미

- 문자열”100”2진수로 변환해라! 문자열“100”8진수로 변환해라! 문자열”100”16진수로 변환해라!

- FF만 쓰고 진법을 안 써주게 되면 10진법이 생략됐다는 뜻인데 10진수에는 F가 없으니까 에러!

 

 

https://everysmallstep.tistory.com/64?category=1045245 

 

Math클래스의 round와 random 메소드

반올림 - Math.round( ) 실수를 소수점 첫째 자리에서 반올림한 정수를 반환 long result = Math.round(4.52); //result에 5가 저장된다. 3142(int) / 1000(int) -> 3(int) 3142(int) / 1000.0(double) -> 3142.0..

everysmallstep.tistory.com