우리가 아는 정수라고 한다면 0을 포함한 자연수이다.
하지만 컴퓨터에선 타입마다 크기가 존재하며 이로 각 타입이 구분된다.
자료형 | 기본값 | 자료크기 | 범위 | 범위 |
---|---|---|---|---|
char | '\u000’ | 2byte | 0 ~ 2¹⁶-1 | 0 ~ 65535 |
byte | 0 | 1byte | -2⁷ ~ 2⁷-1 | -128 ~ 127 |
short | 0 | 2byte | -2¹⁵ ~ 2¹⁵ -1 | -32768 ~ 32767 |
int | 0 | 4byte | -2³¹ ~ 2³¹-1 | -2,147,483,648 ~ 2,147,483,647 |
long | 0L | 8byte | -2⁶³ ~ 2⁶³-1 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
때문에 해당 변수에 들어가는 값이 OverFlow되지 않도록 선언하자
가장 기본적인 타입으로 진수 변환이 가능하다.
2진수는 0b, 0B로 시작한다.
8진수는 0으로 시작한다.
16진수는 0x, 0X로 시작한다.
int var2 = 0b1011; //2진수 int var8 = 013; //8진수 int var10 = 11; //10진수 int var16 = 0xB; //16진수
아주 작은 친구이다. -128에서 127만큼의 크기 밖에 못들어 가며 더 큰숫자 혹은 작은 숫자가 들어가면 에러가 발생한다.
byte var1 = -128; byte var2 = 127; byte varError = 128; //크기 초과로 에러 발생
어마어마한 크기를 다를 수 있는 타입이다. 대신 해당 타입을 쓰려면 데이터 뒤 L을 붙여줘야 한다.(소문자는 1과 비슷해서 대문자로 한다고 한다.)
long var1 = 3000000000L; long varError = 3000000000; //L을 안붙여 오류
스파이다.
Char은 문자, 정수형을 둘다 집어넣을 수 있다. 다만 문자가 들어간다고 문자가 나오는게 아닌 문자가 들어가면 숫자로 저장되어 출력시 다시 문자가 출력되는 형태이다.
유니코드중 'A'는 65이다.
char var1 = 65; char var2 = 'A'; System.out.print(var1) //A System.out.print(var2) //A
위 두 변수 모두 A를 출력한다.
이놈도 스파이다.
위에 있던 정수형들은 원시타입이다.
어찌보면 int와 비슷해보이지만 Integer은 클래스이며 이로 만든 변수들은 객체가 된다.
Integer var1 = 1 Integer var2 = new Integer(2); integer var3 = new Integer("3");
와 같이선언 할 수 있으며 객체답게 여러 함수를 가지고 있다.
Integer var1 = 2; Integer var2 = 3; int result; result = Integer.parsInt("1000"); //문자형을 정수형으로 변환한다. result = Integer.parsInt("B", 16); //16진수를 10진수 정수형으로 변환한다. int com = Integer.compareTo(var1, var2); //두 수를 비교한다.(왼쪽이 크면1, 작으면 -1, 같으면 0)