drexqq
[Java, 자바] 캐스팅(Casting) 본문
Java의 캐스팅(Casting) 형 변환에 대해서 알아보자.
간단히 말하자면 형 변환은 프로그래밍에서 자료형을 다른 형태로 변경하는 것이다.
이게 무슨 말인고 하니 자바의 기본 자료형에는 총 8가지가 있다.
boolean - 1 byte
byte - 1 byte
short - 2 byte
int - 4 byte
long - 8 byte
float - 4 byte
double - 8 byte
위와 같이 8개의 자료형들 중 boolean을 제외한 7개의 기본형들은 서로 형 변환이 가능하다.
하지만 기본형과 참조형 간에는 서로 형변환이 되지 않는다.
여기서 참조형은 기본자료형을 제외한 모든 자료형을 뜻한다. (ex : String, array 등등..)
또한 서로 다른 타입의 변수간의 연산에는 형 변환이 요구되지만, 값의 범위가 적은 타입에서 큰 타입으로의 변환은 생략할 수 있다.
쉽게 말해서 용량이 큰 변수에서 작은 변수로 갈때는 형 변환이 요구되지만 용량이 적은 변수에서 큰 변수로 갈 때는 변환을 생략할 수 있다는 말이다.
하나만 해보자
class CastingEx2
{
public static void main(String[] args)
{
int num = 128;
byte by = (byte)num;
System.out.println("num=" + num);
System.out.println("by=" + by);
}
}
위 코드에서 출력되는 값이 무엇일까?
답은 num=128, by=-128 가 나오게 된다.
그 이유는 위에 말했듯이 작은용량 -> 큰 용량 형 변환이 필요하지 않지만 큰 용량 -> 작은 용량은 형 변환이 필요하기 때문이다.
표현할 수 있는 범위가 1 byte는 -128 ~ 127, int가 -2의 32승 ~ 2의 32승-1이다
따라서 int값을 byte값으로 변환하게 되면 기존의 int값이 그대로 보존되지 않고 값 손실이 일어날 수 있다.
'Back-End > Java' 카테고리의 다른 글
[Java, 자바] If문 (0) | 2020.05.21 |
---|---|
[Java, 자바] 배열(Array) (0) | 2020.05.21 |
[Java, 자바] 연산자 - 비트연산자 (0) | 2020.05.20 |
[Java, 자바] 연산자 - 논리연산자, 비교연산자, 삼항연산자 (0) | 2020.05.20 |
[Java,자바] 연산자 - 산술연산자 (0) | 2020.05.20 |