티스토리 뷰
/*
** 안녕하세요, doriri입니다.
** 오늘은 자료형 표현과 형 변환에 대해서 적어두겠습니다.
*/
1. 자료형
CPU는 기본적으로 int를 가장 고속으로 계산한다.
자바에서는 모든 정수형 연산 시 int형으로 형변화 후 계산한다.
따라서 short를 쓰더라도 short -> int로 형변환 후 계산하여 속도가 느리게된다.
short, byte 자료형은 연산에서는 필요성이 없지만
연산보다 데이터가 중시되는 프로그램에서는 작은 단위로 데이터를 표현하게된다. ( 3D 그래픽정보, 노래 )
double형 하나만 보면 소수점 이하 15자리 까지 오차가 발생하지는 않지만,
오차가 발생할 수 있는 두 double을 연산하면 소수점 이하 3자리에서도 오차가 발생할 수 있다.
따라서 실수를 연산시 기본적으로 오차가 존재한다고 인식해야한다.
더 큰 자료형에서 작은 자료형으로는 형 변환할 수 없습니다. ( long -> int )
실수의 e표기법, 16진수 8진수
double E1 = 1.5e-3 ; -> 0.0015 ->
double E2 = 1.1e+3 ; -> 1500.0 ->
int num1 = 0xA0E; -> 2574 -> ( 16진수 -> 10진수 )
int num2 = 0752; -> 490 -> ( 8진수 -> 10진수 )
char a = 0x3784 -> 0x3784에 해당하는 unicode 저장 ( 해당 국가 폰트 필요 )
boolean b = true ; -> 참
boolean b2 = false ; -> 거짓
2. 형변환
System.out.println(1.4+9.1);
상수도 메모리 공간에 저장된다. 단, 주소에 접근하기 위한 이름이 없기때문에 값 변경을 할 수 없다.
자바에서는 기본적으로 모든 정수형 상수는 int형, 모든 실수형 상수는 double형으로 표현 및 저장한다.
상수는 리터럴(literal)이라고도 한다.
상수를 기본적으로 int, double형으로 인식하기때문에 long, float 사용시 주의해야한다.
long L1 = 10000000000; -> error -> 상수가 int형 범위를 벗어낫기때문에 사용할 수 없다.
long L2 = 10000000000L; -> 상수를 long 형으로 표현해달라 -> 정상 동작
float F1 = 125 ; -> error -> 자바 컴파일러는 상수의 크기보다 byte단위를 기준으로 판단하여 double -X-> float
float F2 = 125F ; -> 상수를 float 형으로 표현해달라 -> 정상 동작
short, byte 형은 범위가 작아 표현이 필요 없다.
3. 자동 형변환 규칙
byte -> short -> int -> long -> float -> double
char ┘
ex) double num1 = 20 ; -> int형 20이 double 형 20.0으로 변환 후 num에 저장
double num2 = 1.25F + 12; -> CPU가 연산할 수 있도록 두 자료형을 맞춰줘야함 -> float형은 int형으로 변환 불가
->1.25F + 12.0F -> 13.25F 가 double형으로 변환 후 저장
4. 명시적 형 변환
int num1 = (int)12.5; -> 소수점 이하가 잘려나가면서 int형으로 저장
long num2 = 2147483648L;
int num3 = (int)num1; -> 상위 4byte를 제외한 나머지를 저장
/*
** ... 확실히 전보다 대충되고 많이 줄었네요
** 대신 중요한 내용만 간략하게 담게되니까 시간 부족하신 분들은 휙휙 보시면 좋을거라고 생각합니다.
** 나중에 시간날 시 수정해서 보기편하게 올려드리겠습니다.
** 읽어주셔서 감사합니다.
*/
'Java > Study' 카테고리의 다른 글
[Java] break문으로 다중반복문 탈출하기 -8 (0) | 2015.02.07 |
---|---|
[Java] Java 강의에 대한 수정 -6 (411) | 2015.02.06 |
[Java] 주석처리와 변수와 자료형 -5 (426) | 2015.02.06 |
[Java] Eclipse를 사용해보자 -4 (0) | 2015.01.27 |
[Java] 자바 프로그램 실행 구조와 JVM -3 (0) | 2015.01.27 |