데이터를 임시 보관하는 메모리(RAM)
int a;
data type variables(변수)
메모리용도 메모리 이름
//정수값을 담을 4byte를 확보하고 이름은 a라고 부여한다
=을 사용public class variable {
int a; // 인스턴스 변수
static int b; // 클래스 변수 == 스태틱 변수
public static void main(String[] args/*로컬변수=파라미터*/) {
int c; // 로컬 변수
}
}
1) primitive data type (원시 데이터 타입)
2) reference(레퍼런스)
public static void main(String[] args) {
byte b = 100; // 1byte
short v1 = b; // 1byte ==> 2byte
short s = 100; // 2byte(-32768 ~ 32767)
int v2 = s; // 2byte ==> 4byte
int i = 98765678; // 4byte
long v3 = i; // 4byte ==> 8byte
long l = 98765678; // 4byte 리터럴 ==> 8byte
char c = 100; // 2byte(0 ~ 65535)
// short x1 = c; // char(0 ~ 65535) ==> short(-32768 ~ 32767),
// 값의 범위가 맞지 않아 컴파일 오류!
}
public static void main(String[] args) {
byte b = 100; // 1byte
short s = 32767; // 2byte(-32768 ~ 32767)
int i = 98765678; // 4byte(약 -21억 ~ +21억)
long l = 18_2345_3456_4567_5678L; // 8byte(약 -922경 ~ 922경)
float f;
double d;
// 주의!
// - float의 자릿수가 넘어가는 정수를 저장하는 경우 값이 짤릴 수 있다.
// - 그럼에도 불구하고 컴파일 오류가 발생하지 않는다.
// - 그래서 정수 값을 부동소수점 메모리에 저장할 때 특히 주의해야 한다.
f = b; // byte(1) ==> float(4). 값을 그대로 저장.
System.out.println(f);
f = s; // short(2) ==> float(4). 값을 그대로 저장.
System.out.println(f);
f = i; // int(4) ==> float(4).
// 유효자릿수를 넘는 정수는 짤린다.
System.out.println(f);
f = l; // long(8) ==> float(4)
// 유효자릿수를 넘는 정수는 짤린다.
System.out.println(f);
d = i; // int(4) ==> double(8)
// 유효자릿수 범위의 정수 값이므로 int(32비트) 값을 그대로 저장할 수 있다.
System.out.println(d);
d = l;
// 유효 범위를 넘어가는 정수인 경우 짤린다.
// 주의! 컴파일 오류가 발생하지 않는다.
System.out.println(d);
}
정수 메모리의 값(byte, short, char, int, long)을
부동소수점 메모리(float, double)에 저장할 때 주의해서 사용유효자릿수를 넘어가는 정수 값인 경우 부동소수점 메모리에 저장될 때 짤릴 수 있다.
그럼에도 컴파일 오류가 발생하지 않기 때문에 놓치는 경우가 많다!
int 가 default값(type)변수 or 리터럴을 붙여주면 된다.(float)100, (long)3.14l = 400_0000_0000L;
i = (int)l;
System.out.println(i) // 1345294336