: 하나의 값을 저장할 수 있는 메모리 공간
변수의 초기화 : 변수에 처음으로 값을 저장하는 것
final static
public class Main {
final static double PI = 3.141592;
public static void main(String[] args) {
int r = 30;
System.out.println(r * r * PI);
}
}
int a = 10;
int b = 20;
char c = 'a';
final int fi = 500;
String s = "string";
-> 변수 : a, b, c, s
-> 상수 : fi
-> 리터럴 : 10, 20, 'a', 500, "string"
public class Main {
final static int INT_MAX = 2147483647;
public static void main(String[] args) {
int a = INT_MAX;
System.out.println(a + 1);
}
}
2의 16승 -> -2의 15승 ~ 2의 15승 -1 -> -32768 ~ 32767
최댓값 32767 + 1 -> -32768
최솟값 -32768 - 1 -> 32767
2의 16승 -> 0 ~ 2의 16승 -1 -> 0 ~ 65535
최댓값 65535 + 1 -> 0
최솟값 0 - 1 -> 65535
long + int -> long + long -> long
8, 4
int
보다 작으면 int
로 변환된다.byte + short -> int + int -> int
char + short -> int + int -> int
문자 -> 숫자 : '문자' - '0'
방식인 것도 2)의 이유다.
오버플로우를 방지한다.
public class Ex3_9 {
public static void main(String[] args) {
int a = 1_000_000; //10의 6제곱
int b = 2_000_000; //10의 6제곱*2
long c = a * b; //10의 12제곱 > int의 범위 10의 9제곱이므로
System.out.println(c); //오버플로우!!
long d = (long)a * b;
//둘 중 하나만 형변환만 해주면 나머지도 알아서 형변환 되므로
System.out.println(d);
}
}
-1454759936
2000000000000