[ 변수와 리터럴 타입 불일치 ]
▸ 범위 변수(그릇)>리터럴(내용물) 경우 → ok(예외 인정) *자동형변환
-int i = 'a';
'a'=65(아스키 코드)
int>char
-long l = 123;
long>int
▸ 범위 변수<리터럴 경우 → error *수동형변환
-int i = 3000000000; //error
20억 넘음
-long l = 3.14f; //error
long<float
*long(8byte), float(4byte) 인데 에러인 이유는
정수형<실수형
실수형이 정수형보다 저장범위 훨씬 넓기때문
-float f = 3.14; //error
float<double
[ 형변환 ]
-연산은 같은 데이터타입 끼리만 연산 가능
- boolean은 제외, primitive type 끼리만 가능
▸ 형식
변수X = (변환할 타입명) 변수Y;
▸자동형변환
작은타입에서 큰타입으로 변환(값 변화x)
byte ← short ← int ← long ← float ← double
▸수동(강제)형변환
큰타입에서 작은타입으로 변환(값 변화o)
byte → short → int → long → float → double
ex)
byte b = 1000; //error (-128~127 벗어남)
byte b = (byte)1000; //ok but 값손실 발생
byte b = 100; //ok 자동형변환
int i =100;
byte b = i; //error 컴파일러 변수i값 뭔지몰라 손실있없 판단못해 수동해줘야함
byte b = (byte) i //ok'Java' 카테고리의 다른 글
| [Java] Scanner, Math.round(), Math.random() (0) | 2023.12.08 |
|---|---|
| [Java] printf()의 지시자 (0) | 2023.12.08 |
| [Java] 문자,문자열 결합과 두 변수 바꾸기 (0) | 2023.12.08 |
| [Java] 변수와 데이터타입과 범위 (0) | 2023.12.05 |
| [Java] JAVA 개요 (0) | 2023.12.04 |