

✨ java에서 정수의 기본은 int고 실수의 기본은 double이다!✨
byte는 -128 부터 127을 저장할 수 있다.
그래서 그 값을 초과하는 값을 저장할 경우 컴파일 에러가 발생한다.
byte b = 128; >> 컴파일 오류
그런데 실행 중 값이 초과된다면 범위 내에서 다시 시작하게 된다.
무슨 뜻이냐면
byte b = 127;
b++
>> b = -128; >> 컴파일 오류가 아니라 b가 -128부터 다시 시작한다.
byte a = -128
a--
>> a = 127 >> 컴파일 오류가 아니라 a가 127부터 다시 시작한다.
2byte(16bit)로 표현되는 정수값을 저장할 수 있는 데이터 타입.
변수에 어떤 진수로 입력을 하더라도 동일한 값이 2진수로 변환되어 저장된다.
int 타입의 저장 범위를 넘어서는 큰 정수는 반드시 소문자 l 또는 대문자 L을 붙여야한다.
long var1 = 1000000000000; >>컴파일 오류
long var1 = 1000000000000L;
int var6 = 3000000;
double var7 = 3e6;
float var8 = 3e6f;
double var8 = 2e-3;

float var5 = 10; >> O (자동 타입 변환)
float var6 = 10.0; >> 컴파일 오류

값이 보존되는 것이 중요!if( (i<Byte.MIN_VALUE) || (i>Byte.MAX_VALUE) ) {
System.out.println("byte타입으로 변환할 수 없습니다");
System.out.println("값을 다시 확인해주세요");
} else {
byte b = (byte) c;
System.out.println(b);
}
java에서는 검사를 위한 상수 제공

결국 이거다! ↓ int i = 122;
byte b = i; >>컴파일 오류. int는 byte보다 크니까.
byte b = (byte) i; >>컴파일 오류 생기지 않음.
System.out.println(b);
char a = 'A';
int result = a + 1; >> 'A'의 유니코드보다 1이 큰 유니코드가 저장됨
char na = (char) result; >>'B'가 저장됨
✅ 틀렸던 문제 1
byte byteValue1 = 10;
byte byteValue2 = 20;
byte byteValue3 = byteValue1 + byteValue2; >>컴파일 오류
int byteValue3 = byteValue1 + byteValue2; >> O
char charValue1 = 'A';
char charValue2 = 1;
char charValue3 = charValue1 + charValue2; >>컴파일 오류
int charValue3 = charValue1 + charValue2; >> O
✅ 틀렸던 문제 2
System.out.println('A' + 'B') = 131
System.out.println('1' + 2) = 51
System.out.println('1' + '2') = 99
>> int보다 낮은 타입의 값들은 int로 타입변환되어 연산되기 때문에!