Java에서 데이터 타입과 일치하지 않는 변수를 입력하게 되면 어떻게 될까요?
Java는 casting이라는 기능을 통해 자동으로 데이터 타입이 변환되는 경우가 있습니다.
어떤 경우에 자동으로 데이터 타입을 변환시킬 수 있는지 알아보겠습니다!
1. 데이터 값에 손실이 없는 경우, 프로그램에서 자동으로 casting (데이터 변환)
- Java에서는 데이터 값이 손실되지 않고 그대로 유지되는 경우에는 자동으로 데이터 값을 컨버팅 하는 기능이 있습니다.
예를 들면, 데이터 타입 double(실수)를 입력하고 데이터 값에는 정수를 입력한다면 데이터 값에 손실은 일어나지 않을 것입니다.
이런 경우, 프로그램 안에서 자동으로 casting 과정을 거쳐서 int형 값이 자동으로 double형의 값으로 전환됩니다.
위를 보면 double b = 1; 이라고 선언한 부분이 있습니다.
double 데이터 타입은 실수를 적어주어야하기 때문에 1.0 이라고 표현하는 것이 적절하지만 정수형으로 적어주었습니다.
이런 경우 1과 1.0의 값에서 손실이 일어나지 않기 때문에 프로그램 내부에서 자동으로 casting 과정을 거쳐 1.0 이라는 값을 출력합니다.
2. 손실이 있는 경우, 명시적으로 형을 바꿔줘야 casting 과정을 통해 변환
-Java에서 값에 손실이 생기는 경우에는 자동으로 casting 과정이 실행되지는 않습니다.
명시적으로 형을 바꿔주는 경우에만 casting 과정이 일어납니다.
예를 들면, int 데이터 타입을 적어주고 값을 실수로 적게되면 int형으로 나타내는데 손실이 일어나는 경우가 생길 수 있습니다.
그럴 때에는 명시적으로 int형으로 나타내겠다는 것을 적어주어야만 값이 출력됩니다.
이클립스라는 프로그램은 생각보다 매우 똑똑하기 때문에 자동으로 오류를 잡아내고 취할 수 있는 조치를 제안해줍니다.
int e = 1.1; 이라고 선언하여 데이터 타입과 값이 상이하여 오류가 나타났습니다.
이런 경우, 이클립스에서 자체적으로 판단하여 해결할 수 있는 방법을 2가지를 제안해줍니다.
첫 번째는 Add cast to 'int' 입니다. 이 기능은 값 앞에 (int)를 추가로 적어주어 값을 정수로 나타내겠다고 명시적으로 나타내 주는 기능입니다.
첫 번째 방법을 클릭하면 자동으로 int e = (int) 1.1; 으로 변환됩니다. 이것을 casting이 진행되었다고 합니다.
두 번째 방법은 데이터 타입을 알맞게 변경해주는 것입니다. 값이 1.1 이기 때문에 데이터 타입은 double로 변할 것입니다.
두 번째 방법을 클릭하자 예상대로 데이터 타입이 double로 바뀌었습니다!
이렇게 이클립스는 똑똑한 방법으로 데이터 타입과 값을 알맞게 변환해주는 casting 기능이 있습니다.
+ casting 과정이 필요한 이유
-Java는 변수의 데이터 타입을 매우 엄격하게 제한하기 때문에 변수의 데이터 타입을 convering 해야 하는 경우가 생길 수 있습니다.
앞서 말했듯이 변수의 데이터 타입을 정확하게 하기 위해서는 값을 입력하는데 불편하겠지만 결과 값의 확실성을 보장해주기 때문에 데이터 타입을 변환해주는 casting 과정이 필수적으로 필요한 것입니다.
'JAVA' 카테고리의 다른 글
7. Java 변수 / 변수의 효용 (0) | 2022.02.17 |
---|---|
6. 문자열의 표현 (0) | 2022.02.15 |
5. Java 숫자와 연산 (0) | 2022.02.15 |
4. Java 숫자, 문자 등을 코드로 표현하기 (0) | 2022.02.15 |
3. Java의 동작원리 (0) | 2022.02.14 |