개발 한번 해블로그
[Java] 5. 자료형 이해하기 본문
앞서 자료형에 대해서 알아보았는데 이 자료형은 2가지로 또 구분할 수 있다.
- 기본 자료형(PDT)
- 문자 자료형
1. 기본자료형(PDT)
- 기본 자료형은 전 게시물에서 언급했던 자료형들을 말한다.
- 기본 자료형으로 진수 표현 방법에 대해 실습
- 2진수(bin)를 표현하려면 <0b>를 기재
- 8진수(oct)를 표현하려면 <0>을 기재
- 10진수(dec)를 표현하려면 숫자 그대로 기재
- 16진수(hex)를 표현하려먼 <0x>를 기재
2. 문자 자료형
- 문자에 대한 숫자값이 약속되어 있는데 이 코드를 <아스키코드:ASCII>라고 한다.
- 아스키코드는 7bit, 즉 128자만 알 수 있다.
- 우리가 사용하는 한국어 등 언어는 유니코드로 자바에서 char가 유니코드 방식을 저장할 수 있는 타입이기 때문에 제약없이 모든 문자가 저장 가능하다.
- 예를 들어 '가'의 유니코드는 44032로 자바로 <\uAC00>이라고 표현하면 16진수로 표현한 것
3. 형 변환(Casting)
- 캐스팅이란 값의 타입을 다른 타입으로 변환하는 것
- 자동형변환(묵시적) : 작은 타입이 큰 타입에 저장되는 경우(ex: byte →int)
- 강제형변환(명시적) : 큰 타입이 작은 타입에 저장되는 경우(ex: int →byte), 따라서 손실 발생하여 형을 강제로 맞춰야 함
- boolean은 형 변환이 안됨!
변환 예시 | 형 변환(강제 형 변환) | 결과 |
int(4byte)->char(2byte) | (char)65 | A |
char(2byte)->int(4byte) | (int)’A’ | 65 |
float(4byte)->int(4byte) | (int)2.6f | 2(손실) |
int(4byte)->float(4byte) | (float)10 | 10.0 |
< 실습>
- c = A / a = 65 / b = 67 이라고 나옴
- A는 아스키코드로 65로 int로 'A'를 기재하면 65로 인식
- B는 아스키코드로 66이므로 int로 'B'를 기재하면 숫자로 인식해 +1을 한 67이 나오는 것
- char han='가'를 기재하면 문자로 인식해 <han=가>로 출력
- int hanD='가'를 기재하면 유니코드로 인식해 <hanD=44032>가 출력
- int hanU='\uAC00'에서 <\u>는 16진수로 표현했다는 의미, AC는 아스키코드이다. 이걸 출력하면 <hanU=44032>가 출력됨
- <가>로 출력하고 싶으면 (char)를 기재하는 <캐스팅> 작업이 필요
- 캐스팅 작업을 하면 <hanU=가> 출력
- 아스키코드 참고시 대문자 A와 소문자 a의 갭은 32
- char로 기재했기 때문에 캐스팅 작업없이 upper+32를 적으면 정수형으로 인식을 해 에러가 남
- 즉, 4byte가 2byte형으로 들어갈 수 있음
- 소문자를 대문자로 바꿀때도 동일, 위 아래가 다른 이유는 char인지 int인지에 따라 달라짐
- soutv시 캐스팅 작업을 하지 않으면 숫자로 인식해 <upper1=85>가 출력
- 소문자 u는 117이며 갭은 32이므로 117-32=85라서 85가 출력
- '1', '2'로 작성하면 숫자가 아닌 문자로 인식하여 아스키코드에 대한 이해가 필요하다.
- '1'은 아스키코드에서 49이므로 48을 빼주면 숫자 1이 만들어지므로 48을 빼준다.
- '2'는 아스키코드에서 50이므로 48을 빼주면 숫자 2가 만들어지므로 48을 빼준다.
- 둘이 합치면 3이 나옴
- 또 다른 방법으로는 눈에는 눈, 이에는 이처럼 문자를 빼주면 된다.
- '1'은 아스키코드가 49, '0'은 아스키코드가 48이므로 '1'-'0'으로 이해하면 된다.
- int에서 double은 자동형변환으로 캐스팅 작업 필요 없음
- double에서 int는 강제형변환으로 캐스팅 작업 필요
어렵다. 진짜 어렵다. 지금 시작도 안했는데 벌써 어렵다.
따로 복습을 더하고 혼자 뚝딱거리면서 해도 그 때 그 순간은 왁! 다 이해함! 했는데 다음 날이 되면 까먹는 magic~
손과 뇌가 익숙해질때까지 무한 반복하는 수 밖에,,,,(무한열차의 렌고쿠처럼,, 마음을,, 불태워라,,)
'Java' 카테고리의 다른 글
[Java] 7. 배열(Array) (4) | 2023.11.20 |
---|---|
[Java] 6. i am 만들어요 사용자정의 자료형 (0) | 2023.11.17 |
[Java] 4. 프로그래밍 3대 요소만 알면 끝 (0) | 2023.11.13 |
[Java] 3. 자바 프로젝트 구조 (0) | 2023.11.13 |
[Java] 2. 그게 뭔데 X덕아 (0) | 2023.11.09 |