Notice
Recent Posts
Recent Comments
Link
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

개발 한번 해블로그

[Java] 5. 자료형 이해하기 본문

Java

[Java] 5. 자료형 이해하기

hide on bush 2023. 11. 15. 11:47

앞서 자료형에 대해서 알아보았는데 이 자료형은 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=가> 출력

 

upper은 대문자, lower은 소문자를 의미

  • 아스키코드 참고시 대문자 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~ 
손과 뇌가 익숙해질때까지 무한 반복하는 수 밖에,,,,(무한열차의 렌고쿠처럼,, 마음을,, 불태워라,,)