Math클래스
- 수학 관련 static메서드의 집합(객체를 만들 필요 xx)
- Math클래스의 메서드는 모두 static이고, 아래와 같이 2개의 상수만 정의해 놓음
올림, 버림, 반올림
- 원하는 자리 수에서 반올림된 값을 얻기 위해서는 간단히 10의 n제곱으로 곱한 후, 반올림 한뒤에 다시 곱한 수로 나눠주기만 하면 된다.
- round( )로 원하는 소수점 아래 세 번째 자리에서 반올림하기
Math클래스의 메서드
rint(짝수 반올림(round even): 반올림해서 짝수 만들기), round 일반 반올림!
-> 반올림도 여러 종류가 있음
- round even은 앞에 홀수일 땐 올림을 하고 짝수일 땐 내림을 함(일반 반올림에 비해 오차가 더 적음)
래퍼(wrapper)클래스
- 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스(기본형 값을 감싸는 클래스)
-> 기본형은 참조형이 아니기 때문에 객체가 아님!(기본형은 객체로 만들어야 사용할 수 있음)
- 자바는 객체지향언어이기 때문에 모든 것이 객체여서 기본형은 객체가 아니니까 존재하면 안됨
- 기본형이 있는 이유는? 성능때문에! 참조형은 객체를 생성하고 참조변수를 통해서만 값을 읽을 수 있어서 시간이 걸리는데 기본형은 바로 값을 불러올 수 있으니까! ex) int i = 10; (기본형), Integer i2 = new Integer(“100”); (참조형) 100의 값이 있는 주소를 참조변수가 저장해서 불러올 수 있음
-> 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
-> 추상클래스이면서 래퍼객체를 기본형으로 바꿀 때 쓰는 메서드를 가지고 있음
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진법의 문자열을 숫자로 변환하는 방법
- parseInt는 10진수 변환/ 2, 8, 16 -> 2진수, 8진수, 16진수
- 문자열 뒤에 진수를 안 써주게 되면 자동적으로 10진수가 생략됐다는 의미
- 문자열”100”을 2진수로 변환해라! 문자열“100”을 8진수로 변환해라! 문자열”100”을 16진수로 변환해라!
- FF만 쓰고 진법을 안 써주게 되면 10진법이 생략됐다는 뜻인데 10진수에는 F가 없으니까 에러!
https://everysmallstep.tistory.com/64?category=1045245
'멀티캠퍼스 풀스택 과정 > Java의 정석' 카테고리의 다른 글
자바의 정석7-1 날짜와 시간클래스(Calendar, Date) (0) | 2022.01.08 |
---|---|
자바의 정석6-4 오토박싱 & 언박싱 (0) | 2022.01.07 |
자바의 정석6-2 String 클래스, Stringbuffer(StringBuilder) (0) | 2022.01.07 |
자바의 정석6-1 Java.lang패키지, eqauls, hasecode, toString (0) | 2022.01.07 |
자바의 정석5-3 사용자 정의 예외, 예외 되던지기, 연결된 예외 (0) | 2022.01.06 |