byte / 1byte / -128~127
short / 2byte / -32,768~32,767
int / 4byte / -2,147,483,648~2,147,483,647
long / 8byte / -9,223
=> byte나 short도 정수형이지만 자바에서 정수형 계산시 int를 쓴다
(실제로 short를 이용해 연산을 해봤는데 short a=1을 출력시 출력만 되고 short끼리의 연산은 불가능하다 이를 해결하기 위해서 short의 연산을 int형으로 변환해서 했다.)
-int형으로 출력-
=>JVM의 피연산자 스택이 피연산자를 4byte의 단위로 저장하기 때문에 크기가 4byte보다 작은 자료형(byte or short)을 계산 시 4byte로 변환하여 연산을 수행해야 한다고 한다.
출처 : 티스토리 GYU's DEV STORY
*char / 2byte / 유니코드
=>char는 문자형으로 알고있지만 기본적으로 정수형이라고 한다.(아스키코드)
char a='a'; //char는 홑따옴표, String은 대따옴표
System.out.println(a); //a만 출력
System.out.println(a+2); // a+2와같이 문자a에 정수2를 더하면
//아스키코드 a=97 따라서 a2출력이 아닌 99가 출력
System.out.println((char)(a+2)); //a+2를 char로 형변환 -> c출력
* float / 4byte
* double / 8byte
=> 정밀도가 double이 더 좋아서(?) float보단 자바에서 실수형 선언 시 double을 우선적으로 사용한다.
*boolean / 1byte
boolean b=false;
//기본적으로 값이 있는지 찾을 때 거짓이라고 두고 찾는다
++ 출력문에서 정수끼리의 연산 시 int형을 선언해주지 않아도 (괄호)처리하면 연산이 가능하다