자바에서 기본 자료형은 다양하다
- 부울대수 boolean
- 정수 byte , short, int , long
- 실수 float, double
- 문자 char
등이 있다.
우리가 자료형을 통해서 변수를 선언할 때 = 을 기준으로 왼쪽 오른쪽 값에 자료형이 일치해야하는 것이 기본인데,
자바에서는 자동 형변환을 통해서 양쪽을 서로 같도록 맞춰준다. 하지만 여기서 예외가 있으므로 이를 숙지하고 조심해야한다.
1. Byte 선언, 범위를 넘는 숫자를 할당할 때
이는 숫자의 값이 자동으로 Int로 된다. 따라서 Byte != int 가 되므로 오류가 발생한다.
2. float 선언, 실수를 할당할 때
이도 비슷하게 실수는 Double 형식으로 자동 형변환 된다. 따라서 값 뒤에 F를 붙혀 Float를 맞춰주던, Double를 선언하여 오류를 해결할 수 있다.
그 외로 값 앞에 (자료형)을 붙혀서 강제(수동으)로 형변환을 하여 오류를 방지할 수도 있다.
자료형 간의 연산
기본적으로 같은 자료형끼리 연산을 진행하면 해당 자료형의 결과값이 출력된다.
하지만 예외가 있다.
- Byte + Byte = Int
- Short + Short = Int
그렇다면 다른 연산자끼리 연산을 진행하면 어떻게 될까?
이들은 자동으로 큰 쪽으로 담게 된다. 데이터의 손실을 막기 위해서이다.
이를 업캐스팅이라고 하는데 업캐스팅의 개념은 밑에서 서술하겠다.
업캐스팅 VS 다운캐스팅
여기서 형 변환을 할때 작은 자료형을 큰 자료형에 담으면 개발자가 타입 변환 코드를 넣지 않더라도 컴파일러가 자동으로 타입 변환을 실행하는데, 이를 '업캐스팅'이라고 한다.
쉽게 말하면 엄청 큰 통에 반찬을 조금 담으면 비효율적이기 때문에 자동으로 통을 적당하게 맞춰주는 것이다.
이 반대는 '다운 캐스팅'이라고 하는데 이는 데이터 손실이 발생할 수 있기 때문에 자동으로 진행되진 않는다. 개발자가 명시적으로 타입 변환을 수행해야하는데 자료형의 크기에 맞게 원하는 값을 얻을 수 있도록 잘 파악해야한다.
위 예시 처럼 분명 1.3의 결과를 담아서 출력을 했는데 1이 출력되었다. 통이 작아서 반찬이 넘쳐흘러 버려진 것이다.
이를 다운캐스팅이라고 한다. 이 결과들은 컴파일로 오류가 출력되지 않기 때문에 개발자는 원하는 결과를 얻을 수 있도록 파악하고 조심해야한다.
'Development > Java' 카테고리의 다른 글
[Java, 개념] 제어문 Switch문과 Break (0) | 2022.07.20 |
---|---|
[Java, 개념] 연산자 (0) | 2022.07.20 |
[Java, 개념] 변수 (0) | 2022.07.20 |
[Java, 개념] 문자열 + 연산 (0) | 2022.07.19 |
[Java, 개념 ] 자바 기본 구조 (1) | 2022.07.16 |