개발자 미니민의 개발스터디

2. JAVA 데이터 타입

by mini_min

◾ byte : -128~127까지 저장

byte a, b = 10;
a = -15;
System.out.println(a+","+b);

 

a가 130일 때, byte 로 표현하지 못하면, 강제로 형변환하여 표현할 수 있다.

이때, 값이 넘쳐서 형변환이 되면 원래 값이 얼마인지 모르게 된다.

a = (byte)130; // 강제로 형변환
// 부호 자리는 1(음수) 값이 넘쳐서 형변환되면 원래 값이 얼마인지 모르게 됨.
// 오버플로어 주의!
System.out.println(a); // -126이라고 나옴
byte a, b;
a = (byte)129; // 오버플로우가 발생하여 -127이 저장
b = (byte)385; // 오버플로우가 발생하여 -127이 저장
System.out.println(a + "," + b);
System.out.println(a == b); // a랑 b랑 같냐고 물어보는 것

 

◾ short 와 int

아스키코드는 미국에서 표준화한 정보교환용 7비트 부호체계로, 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 이루어진다. 

short s1, s2 = 100;
s1 = 'A'; // 65. 문자는 ASCII 코드값이 저장되므로 가능
System.out.println(s1+","+s2);
int i1, i2, i3;
i1 = 200;
i2 = 'a'; // 'a' : 문자 'a'의 ASCII 코드 값은 97
i3 = '1' + '3'; // '1': 문자 '1'의 ASCII 코드 값은 49
// 49 + 51
System.out.println(i1+","+i2+","+i3);

 

◾ 큰 자료형의 값을 적은 자료형에 대입할 수 없다.

ex) int 값을 short 값에 넣을 수 없다. 대신, (short)를 붙여서 강제로 형변환하면 가능하다.

= 값 짤림 현상이 발생할 수 있다. 

 

💥 적은 자료형은 큰 자료형에 대입하는 것은 가능하다.

short a, b = 100;
int x = 100; //4byte
// a = x; // 컴파일 오류. int > short 자료 타입이 안맞아서 가져올 수 없다.
// 큰 자료형의 값을 적은 자료형에 대입할 수 없다.
a = (short)x; // int를 short 로 강제로 형변환
// 잘림 현상 발생할 수 있다.
// 형변환 과정에서 표현범위를 초과하면 잘림
System.out.println(a+","+b+","+x);
long n; // 8byte
n = x; // int을 long에 대입. 가능! 적은 자료형을 큰 자료형에 대입 가능.
System.out.println(n);
// n= 2200000000; //22억은 int형이 아니므로 컴파일 오류 발생.
n = 220000000L; // long 형의 리터널
System.out.println(n);

 

float 은 단정도형이고 double 은 배정도형이다.

float 은 정밀도가 낮아서 정밀도를 요구하는 경우에는 double 을 사용한다. 

float f; // 단정도형
f = 10; // int 리터널을 float 자료형에 대입한 것이다.
System.out.println(f); // 10.0
// f = 0.5; // 컴파일 오류.
// 0.5 : 배정도형 리터널로 float 에 대입 불가하다.
f = 0.5f; // 단정도형 리터널.
System.out.println(f);
f = 1.2e04f; // 1.2 * 10의 4
System.out.println(f);
f = 'A'; // 문자는 ASCII 코드값으로 저장된다. 작은 자료값은 큰 자료값에 넣을 수 있기 때문에 출력 가능.
System.out.println(f);
double d; // 배정도형
d = 0.5;
System.out.println(d); // 그대로 들어갑니다.
d = 10.5d;
System.out.println(d);
// f = d; // 안된다. 컴파일 오류. 배정도형이 더 큰데 단정도형인 f에 들어갈 수 없다.
f = (float)d; // double에서 float으로 강제 형변환.
System.out.println(f);

 

 

 

 

블로그의 프로필 사진

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기