정수값(10진수, 16진수, 8진수, 2진수) 32비트(4바이트)로 표현 가능
26 0x1a 032 0b11010
26L8바이트로 표현하겠다(64비트)
0x1aL
실수값 (기본값이 더블// 8바이트)
123.4 123.4f(4바이트) 123.4d(8바이트)
1.234e2 (지수표현)//소수점이 이동한 수를 e로 표현(왼쪽으로)
1.234e2f
1.234e2d
문자값
'A' '\u0065'(A의 코드값)
진리값
true false
00000001 >1
00000010 >2
00000100 >4
00001000 >8
00010000 >16
각 자리의 수를 더함으로써 나옴 ( 1+4+8+32=45)
반대는 가장 근접한 2제곱의 수부터 작성 ( 45 = 32+8+4+1 이기 때문에 각 32,8,4,1 자리에 1을 넣으면 된다. 00101101)
16진수로 읽으려면 4개씩 묶어서 읽기
0010 / 1101 을 보면 앞쪽 0010은 2 이고 뒤 1101은 13이다.
하지만 1자리 수로 전부 읽어야 하기 때문에 13은 16진법에 의해 D로 부른다.
//0~9 A B C D E F (16진수)//
8진수로 읽으려면 3개씩 묶어서 읽기
(0)00/101/101 = 0/5/5
45 = (0x)2D = (0)55 = (0b)00101101
정수형식과 변환
자바는 정수 값을 4개 준비해 있는데 1,2,4,8바이트가 있다.
26 = 0x1A
byte - 1바이트 // 26
short - 2바이트 // 26
int - 4바이트 // 26
long - 8바이트 // 26L
long부분은 L을 통해 나타낼 수 있는데 다른 차이가 없는 byte나 short, int는 어떻게 표현해야 할까?
!!
변수 = 값을 저장할 수 있는 공간
자바는 컴퓨터 언어로 물리적 장치를 이용하게 되고 한정된 공간에 담아야 하기 때문에 한정된 명칭을 사용하는 것(byte,short,int,long)이다.
!!
계산을 하거나 값을 담을 때 그릇과 값이 같아야 한다. 덧셈 뺄셈을 할 때도 같은 크기와 종류끼리만 연산이 된다.
형식이 다른데 작동하는 경우 묵시적 형 변환이지 형식이 다른데 대입할 수 있다는 뜻은 아니다.
long x = 30L; //long이라는 크기의 정수를 담을수 있는 x(8바이트 그릇)라는 변수에 30을 저장
!!
long x =30; /*묵시적으로 변환 돼서 에러가 나지 않음. 변수보단 숫자가 맞춰서 변하게 된다.
큰 방에 작은 사람이 들어가는 것 (묵시적 형식변환)*/
byte x = 30;/*정수의 기본이 4바이트이기 때문에 1바이트를 담는 byte에서 에러가 남.
/위와 다르게 묵시적으로 변환되지 않아서 컴파일 과정에서 에러.
(4분의 1토막을 내야 하는데 데이터 손실 될 가능성이 있기 때문!! 작은방에 큰사람*/
byte x = (byte)30;
/*(byte)는 프로그래머가 명시적으로 byte로 잘라 라고 대입하는 것(명시적 형식변환)*/
실수 형식
26.5 = 2.65e1
float 4바이트
double 8바이트
float x = 3.5; /*에러가남 실수는 기본이 8바이트이기 때문에 float는 4바이트라 작다.
3.5앞에 (float)이라고 명시적 형 변환을 할 경우 에러는 사라진다.*/
double x =3.5f;//double9바이트고 3.5f가 4바이트이기 때문에 묵시적 형변환으로 가능.
문자형식
char 2바이트
부울형식
boolean 1비트 // 1이냐 0이냐를 표현하기 때문에 1비트
정리