본문 바로가기

컴맹탈출기/Java를 자바

Java Data type - 까먹기 쉬운 문법 정리(C와의 차이점 위주)

<Java zulu1.8 버전(2018년) 을 기준으로 작성하였습니다.>

 

  • C는 조건문 내에서 연산의 결과값이 0이면 true, 0이 아니면 false로 처리하지만, java는 무조건 boolean 자료형인 true, 혹은 false 만 조건문 내에 오는 것을 허용한다. -> boolean 자료형의 변수에도 0이나 1 같은 숫자가 아니라, 무조건 true 혹은 false만 올 수 있음.
  • char 변수에도 숫자를 넣을 수 있다 -> 이 때, 4바이트에서 2바이트로 데이터 손실이 일어나므로 명시적 형변환 필요. ( 예: char a = (char)65; )
  • java의 data type 별 표현 가능 범위.
    1. 정수형 - byte, short, int, long
    2. 실수형 - float, double
    3. 문자형 - char
  • 음수를 나타낼 땐 제일 앞 (왼쪽)비트 만큼 -1배 해줬다가 그 오른쪽 수들을 더해줌.
  • 2^0부터 시작하기 때문에 2^(bit수-1) 만큼 표현된다.
  • 양수 최댓값 - 음수 최댓값 + 1 = 그 비트의 경우의 수(2^bit수)
byte 8bit (1byte) -2^7 ~ 2^7-1
short 16bit (2byte) -2^15 ~ 2^15-1
int 32bit (4byte) -2^31 ~ 2^31-1
long 64bit (8byte) -2^63 ~ 2^63-1
float 32bit (4byte)  
double 64bit (8byte)  
char 16bit (2byte) \u0000 ~ \uffff
16진법에서, 한 글자가 4 bit를 나타냄
즉 0 ~ 2^16-1

 

  • 묵시적 형변환 - 표현 범위가 더 큰 변수(double 형) 안에 적은 표현범위의 변수(int형) 을 넣으면 알아서 bit가 뻥튀기 되어 들어감
  • 명시적 형변환 - 범위가 작은 변수에 범위가 큰 변수를 넣을 떄 발생. 데이터 손실을 우려해 컴파일 에러가 나므로 명시적으로 형변환 해 줘야 함. (예: int a = (int)A;)