<자바의정석 3판, Ch2 내용 중>
변수의 타입은 크게 기본형 & 참조형로 나눔
기본형(Primitive type) |
실제 값(data)을 저장 |
<총 8개> -문자형(char) -정수형(byte, short, int, long) -실수형(float, double) -논리형(boolean) |
|
참조형(Reference type) | 객체의 주소를 저장 . 8개의 기본형 제외한 나머지 |
기본형에서 boolean을 제외한 나머지 타입들은 서로 형변환이 가능
-하지만 기본형 <-> 참조형은 서로 형변환 할 수 없음 (참조형의 형변환은 자바-Ch7에 설명)
변환 방법: (타입)피연산자 |
정수형에서 실수형으로 변환:
- 실수형이 정수형보다 훨씬 큰 저장범위 갖기에 정수형-> 실수형 변환에 별 무리가 X
- 한 가지 주의할 점: float는 약 7자리의 정밀도만을 제공하므로, 8자리 이상의 정수값을 실수형으로 변환할 때는 float이 아닌 약 15자리의 정밀도를 갖는 double로 형변환해야 오차 발생 안함
Ex. int형 12345678를 float으로 변환 → 12345679.0 int형 12345678를 double로 변환 → 12345678.0
|
실수형을 정수형으로 변환
- 실수형의 소수점 이하 값은 버려짐(자료의 손실 발생 가능)
- 반올림 발생 X (ex. 실수 1.666 를 int로 형변환하면, 1이 됨)
자동 형변환
: 서로 다른 타입의 변순간의 연산은 형변환을 하는 것이 원칙이지만,
값의 범위가 작은 타입에서 큰 타입으로의 형변환은 생략 가능
(컴파일러가 생략된 형변환을 자동적으로 해줌)
ex) int i = 3;
double d = 1.0 + i; //double d = 1.0 + (double)i; 에서 형변환 생략됨
기본형타입 간 형변환 예시
class Main {
public static void main(String[] args) {
int i = 12345678;
float f = (float)i; //int를 float으로 형변환
int i2 = (int)f; //float를 다시 int로 형변환
double d = (double)i; //int를 double로 형변환
int i3 = (int)d; //double를 다시 int로 형변환
System.out.println(i); //출력: 12345678
System.out.println(f); //출력: 12345679.0
System.out.println(i2); //출력: 12345679
System.out.println(d); //출력: 12345678.0
System.out.println(i3); //출력: 1234568
}
}
'Java' 카테고리의 다른 글
[자바] String 문자열을 StringBuilder로 옮겨담기 (0) | 2019.09.20 |
---|---|
[Java] Map의 getOrDefault() 사용 (0) | 2019.09.15 |
[자바] 기본형과 String(문자열)간의 변환방법 (0) | 2019.01.29 |
[자바] 예외처리(Exception Handling) (0) | 2019.01.26 |
[자바] 제어자(Modifier)- 접근제어자와 기타제어자 (0) | 2019.01.22 |