| English | 의미 |
|---|---|
| casting/ˈkæstɪŋ/ | 타입 캐스팅 |
| truncates/ˈtrʌŋkeɪts/ | 절단 |
| widening/ˈwaɪdənɪŋ/ | 확장 |
| narrowing/ˈnærəʊɪŋ/ | 축소 |
| range/reɪndʒ/ | 값의 범위 |
| overflow/ˌəʊvəˈfləʊ/ | 오버플로우 |
값의 타입 변경
- 캐스팅은 값을 한 타입에서 다른 타입으로 변환한다.
- 괄호 안에 목표 타입을 쓴다:
(double) 5는5.0을;(int) 3.9은3을 준다. int로 캐스팅하면 절사된다—소수점 부분을 버리고 반올림하지 않는다.(int) 3.9는3이며,(int) -2.7는-2(영方向)입니다.
확장(widening)은 자동으로 발생
- 작은 타입에서 큰 타입으로 가는 것(
int→double)은 확장이다. - 확장이 안전하므로 Java는 이를 자동으로 수행합니다:
double d = 5;가5.0을 저장합니다. int에서double으로 갈 때 정보는 손실되지 않는다.- 확장을 명시적으로 쓰는_case는 드물지만 허용된다.
Narrowing은 명시적 변환이 필요합니다
- 큰 타입에서 작은 타입으로 가는 것(
double→int)은 축소이다—데이터 손실이 발생할 수 있다. - 자바는 명시적 캐스팅을 요구한다:
int n = (int) 3.9;(캐스팅 없이則는 컴파일되지 않음). - 캐스팅은 "소수점 버릴 것을 안다"고 약속하는 것이다.
- 축소는 영方向 toward zero로 절사된다.
범위와 오버플로우
- 각 타입은 고정된 범위를 가집니다:
int는 약 ±2.1십억을 저장할 수 있습니다. - 범위를 초과하면 오버플로우가 발생→값이 잘못된 숫자로 wraps around된다.
- 오류는 발생하지 않으며, 결과만 침묵 속으로 틀리게 된다.
- 매우 큰 정수를 위해更大的类型(예:
long)이 필요하다.
int로 변환하면 절단됩니다 — 반올림되지 않습니다. (int) 3.9은 3이며, 4이 아닙니다; (int) 2.99은 2입니다. 부동소수점 나눗임을 강제하려면 피연산자 중 하나를 변환하십시오: (double) 7 / 2은 3.5이지만, (int)(7.0 / 2)은 3입니다. 또한 오버플로우를 주의하십시오: ±2.1십억을 초과하는 int 결과는 조용히 wrap되며 오류가 발생하지 않습니다.
두 int의 평균을 올바르게 구하는 방법:
int a = 7, b = 2;int avg = a / b;→3(int 나눗셈은 나머지를 버립니다 — 원하는 결과가 아닐 가능성이 큽니다).double avg = (double) a / b;→3.5(한쪽을 변환하여 소수점 나눗셈을 강제로 실행합니다).
변환(Casting) (type) value은 타입 간 변환을 의미합니다. int → double (확장)은 자동으로 안전하게 이루어지지만, double → int (축소)에는 명시적 변환이 필요하며 절단되어 0 방향으로 수렴합니다 (반올림하지 않음). 각 타입은 고정된 범위를 가지며, 이를 초과하면 오버플로우가 발생하여 silent(무결함하게) 오류가 납니다.
int와 double 사이의 캐스팅
(int)는 3.9를 3으로 절단(truncate)하며, 한 쪽을 캐스팅하면 3.5가 됩니다.
Java에서 (int) 3.9의 값은 무엇인가?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
int로 형변환하면 소수점을 버립니다 → 3, 4이 아닙니다.
int를 double로 변환하는(안전하고 자동적인 변환) 것을 ...라고 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
작은 값 → 큰 값은 확장이며, 자동으로 수행됩니다.
컴파일을 위해 명시적 캐스팅이 필요한 것은?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
double → int는 축소(narrowing)이며 명시적 캐스팅이 필요합니다.
(double) 7 / 2의 값은?
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
연산자 중 하나를 부동소수점类型为 변환하면 부동소수점 나눗셈이强制执行됨 → 3.5.
int 결과값이 범위超出하면 오버플로우가 발생하며, Java는 이를 오류로 보고합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
오버플로우 시 값이 순환하여 감지되지 않으며 — 오류가 발생하지 않습니다.