byte(1byte memory)
, short(2)
, int(4)
, long(8)
float(4)
, double(8)
char(2)
boolean(1)
ex) int type 변수를 만들고 싶다면,
int a; // type과 변수 이름을 적어준다. a = 10; // 가능 a = 10.3; // 불가능
int 타입인 변수 a는 정수로서 4byte 값만 가질 수 있다.
float b = 10.3; // 가능
컴퓨터에서 연산을 하려면 최소 4byte는 있어야한다. 또한 컴파일 단계가 아니라 실행을 해야 메모리가 확보된다.
System.out.println(1); // 1을 int로 받아들인다. System.out.println(1.0); // 1.0을 double로 받아들인다.
실행할 땐 1은 int, 즉 4byte의 메모리가 확보,
1.0은 double, 즉 8byte의 메모리를 확보한다.
- 참고로 컴파일러는 자료형에 맞는 바이트 메모리가 들어갔는지도 확인해준다
- 오타도 확인해준다.
작은 type은 큰 type으로 (자동)형변환이 가능하다.
반대는 강제형변환을 해줘야한다.short d; byte e; e = (byte)d;
자동형변환 가능
- byte ⇨ short ⇨ int ⇨ long ⇨ float ⇨ double
- char ⇨ int ⇨ long ⇨ float ⇨ double
- 강제형변환
cast
연산자로 처리:
ex)int a = 10; short b = (short)a;
int a를 short 변수에 castcade해서 집어넣을 수 있음
boolean은 형변환 안됨float f; f = 34.5; // 컴파일 에러가 난다. f = 34.5f
그 이유는 34.5가 double 타입으로 컴파일 과정에서 인식 되기때문
그래서 f 붙여줘야한다.
배열
int[] arr; arr = new int[5];
배열을 참조하는!
public class Datatype {
public static void main(String[]args) {
byte b; //변수 선언
b = 1;
// 인트라고 선언하지 않았지만 인트보다 큰 애들은 인트로, 작은애들은...바이트타입으로?결정..됨...뭐라는겨
b = 10;
//b = 12.3;
b = (byte)12.3;
System.out.println(b);
int i = b;
System.out.println(i);
float f = i;
System.out.println(f);
//f = 34.5 이건 double 타입으로 판단함
f = 34.5f;
System.out.println(f);
long l = 10;
//l = 123456789123;
l = 123456789123l;
System.out.println(l);
char c;
c = 'a'; //a
System.out.println(c);
i = c; //97
System.out.println(i);
c = 98;
System.out.println(c);
boolean flag;
flag = true;
//flag = (boolean)1; 형변환 안됨~
System.out.println(flag);
}
}