티스토리 뷰

기본 자료형

값의 종류 이름 크기(byte) 저장 되는 값의 범위
정수 byte 1 -128 ~ 127
char 2 모든 유니코드 (0~65535)
short 2 -32,768 ~ 32,767
int 4 -2³¹ ~ 2³¹-1
long 8 -2⁶³ ~ 2⁶³-1
실수 float 4 (±)1.4E-45 ~(±)3.4E38
double 8 (±)4.9E-324 ~ (±)1.7E308
논리 boolean 1 true, false

* 1 byte = 8 bit / 주로 char, int, double, boolean 사용


자동형변환

  • 크기(byte)가 작은 자료형을 큰 자료형에 넣을 때 자동으로 변환

<예시 1>
입력 :
byte b1 = 1;
short s1 = b1;
int i1 = s1;
System.out.println(i1);
출력 : 1

<예시 2>
입력 :
char c2 = '오';
int i2 = c2;
Sysout.out.println(i2);
출력 : 50724
* char형이 int형으로 변환돼서 '오'의 유니코드 50724 출력


강제형변환

  • 크기 상관없이 강제로 자료형을 변환

<예시 1>
입력 :
int i3 = 200;
byte b3 = (byte)i3;
System.out.println(b3);
출력 : -56

* byte는 -128~127이기 때문에 200이면 127에서 73만큼 더 가게 되고, -128부터 73칸 가면 -56이어서 -56 출력

* -128~127은 byte로 변환해도 그대로 출력

<예시 2>
입력 :
int i4 = 51068;
char c4 = (char)i4;
System.out.println(c4);
출력 : 일

* int형 501068을 유니코드 char로 변환하여 '일' 출력


서로 다른 자료형 연산

  • int보다 작은 자료형은 무조건 int형으로 변환하여 연산
  • 아래 예시처럼 다른 자료형으로 변환하여 연산도 가능하지만 int보다 작은 자료형은 연산 후 제대로 된 결과 값 출력이 어려울 수 있기 때문

<예시>
- int형으로 자동형변환 연산
입력 :
byte b5 = 1;
short s5 = 3;
int result = b5 + s5;
System.out.println(result);
출력 : 4

- byte형으로 강제형변환 연산
입력 :
byte b5 = 1;
short s5 = 3;
byte result = (byte)(b5 + s5);
System.out.println(result);
출력 : 4

* 위의 byte result = b5 + s5 와 같이 b5 + s5를 강제형변환 안 하면 오류

- double형으로 연산
int num1 = 10;
int num2 = 3;
int result1 = num1 / num2;
double result2 = num1 / num2;
double result3 = (double)num1 / num2;
System.out.println(result1 + ", " + result2 + ", " + result3);
출력 : 3, 3.0, 3.3333333333333335

* 정수/정수=정수 result2는 소수점 제외하고 정수.0으로 출력, 소수점까지 출력하려면 result3처럼 double 강제형변환

- char형 글자를 의미
입력 :
char c6 = 'A' + 3;
System.out.printlin(c6);
출력 : D

* 'A'의 유니코드에 3을 더해 'D' 출력