티스토리 뷰
의외로 숨겨진 규칙이 많은
자동 형 변환(type autoCasting)#️⃣
산술 혹은 대입시 컴파일러가 수행하는 타입 변환
작은 크기의 타입에 저장된 값을
큰 크기의 타입에 저장할 때 자동으로 발생된다.
타입을 크기순으로 정렬하였습니다.(단위 byte)
byte(1) - char(2) - short(2) - int(4) - long(8) - float(4) - double(8)
좌측에서 우측으로의 묵시적 변환은 가능하지만 역순은 불가능합니다.(명시적 변환 제외)
float과 double은 부동소수점 표현방식을 사용하므로 더 큰 범위를 표현할 수 있습니다.
몇 가지 예시와 함께 설명하겠습니다.
1. 정수형
int(4byte) -> long(8byte) 더 큰집(타입)으로 묵시적으로 변환되어 할당된다.
long(8byte) -> int(4byte) 더 작은집(타입)으로는 컴파일되지 않는다.
compile시 아래와 같은 문구가 뜬다.
2. 실수형
정수에서 실수로의 변환은 뒤에 ". 0"이 붙은 채로 캐스팅됩니다.
정수형에서 설명처럼 반대의 경우는 허용되지 않습니다.
3. 문자형
char type을 정수형으로 변환 시 unicode값이 저장됩니다.
해당 포스팅과는 관련 없지만 chartype은 모든 unicode를 표현 가능합니다.(unicode = 2byte)
해당 결과로 65가 출력됩니다.
실수형으로도 변환이 가능하며 65.0으로 출력이 됩니다.
0 ~ 65535(unicode)의 범위를 가진 char type에
-128 ~ 127의 범위인 byte type은 auto casting을 막아두었습니다.
*
unicode의 number와 매핑된 char를 볼 수 있는 사이트입니다.
https://www.techonthenet.com/unicode/chart.php
byte type에서 char type으로 명시적 변환을 하면?
char는 부호 없는 16bit 정수입니다.
negative value given to char prints '?'
https://coderanch.com/t/265284/certification/Explanation-required-negative-char-prints
대략적으로 요약하자면 negative numuber는 positive number로 해석됩니다.
'Java & Kotlin' 카테고리의 다른 글
Java Lambda Expression (0) | 2022.07.26 |
---|---|
Java Arithmetic Operator (0) | 2022.07.25 |
java primitive type (0) | 2022.07.23 |
Java Equals, HashCode (0) | 2022.07.17 |
kotlin 기본 사용법 (0) | 2022.07.16 |
- Total
- Today
- Yesterday
- boot
- 문제
- 자바
- 개발자채용
- 알고리즘
- 프로그래머
- 백준 제로 자바
- 자사서비스
- 다대일
- boot 일대다
- 백준 제로
- JDK8
- jre8
- jvm
- JPA
- mappedby
- jre
- 스타트업
- 백준
- 백엔드
- springboot
- Spring
- ㅃ
- JDK
- java8
- jre11
- jdk11
- 관계설정
- 스택
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |