JAVA/JAVA기초

[JAVA기초] 형변환(Casting)

개발자하소서 2021. 11. 3. 08:59
728x90
반응형
SMALL

📌 형변환

  · 형변환은 어떤 자료형의 값을 다른 자료형의 값으로 바꿔 주는 연산이다.

  · 형변환은 변환되는 값의 왼쪽에 원하는 타입을 소괄호로 둘러싸서 적어 주면 된다.

// (새로운 자료형) 수식;
int x;
y = (double)x; // int형 변수 x가 가지는 값을 double형으로 변환하여 y에 대입하는 경우

  · 형변환은 크게 세가지가 있는데, 자동형변환, 강제형변환이 존재한다.

 

📌자동 형변환

· 자동 형변환은 자바에 의해 자동으로 형변환이 이루어 지는 것을 말한다.

· 수식에서 서로 다른 자료형이 등장할 시 자바 컴파일러는

  작은 메모리 크기의 자료형을 보다 큰 메모리 크기의 자료형으로 자동적으로 변환한다.

 

 int d1 = 10;
 long d2 = d1; // int형인 d1이 자동으로 long형으로 변환되어 d2에 할당된다
               // 즉 (long)이라고 따로 형변환을 해줄 필요가 없다는 것을 뜻한다
int i = 100;
char c = 'a';
int j = c; // char타입에서 int 타입으로 자동변환 //결과값 : 97
double d = i; // int 타입에서 double 타입으로 자동변환 //결과값 :100.0.

· 자동형변환은 다음의 순서 방향으로 자동으로 이루어 진다  

  byte(1byte) -> short(2byte) -> int(4byte) -> long(8byte) -> float(4byte) -> double(8byte) 

· 위에서 하나 의아한 점은 long에서 float의 변환일텐데 이는 정수에서 실수로의 변환을 의미한다.

·  논리형인 boolean 은 형변환이 불가능하다.

· char(2byte) - > short(2byte) 형변환은 불가하다. short는 + , - 나타내는 부호bit을 가지기 때문이다.

· 대신에 char(2byte) - > int(4byte) 형변환은 가능하다. 왜냐면 bit가 있더라도 2byte 여유 공간이 있기 때문이다.

 

📌강제형변환 - 축소변환  

· 큰 메모리 크기의 자료형을 보다 작은 크기의 자료형으로 변환할 때 발생하는 것이다.

· 예로들어 실수형 변수를 정수형 변수에 저장하는 것이다.

· 이 변환은 정밀한 숫자나 큰 숫자를 나타내는 정보를 잃을 가능성이 있다.

int i = (int) 12.5 // i에는 12인 정수만 저장된다.
                   // 즉, 소수점 이하는 사라지게 된다.

 

📌형변환의 예시 

public class Casting{
	
    public static void main(String[] args){
   		int i = 12345678;
        float f = (float)i; // int를 float으로 형변환 
        int i2 = (int)f; // float를 다시 int로 형변환
        
        double d = (double)i; // int형인 i를 double로 형변환
        int i3 = (int)d; // double형으로 바뀐 i를 다시 int로 형변환 
        
        System.out.println(i); // 12345678
        System.out.println(f); //12345678.0 (E7)
        System.out.println(i2);//12345678
        
        System.out.println(d); // 12345678.0 (E7)
        System.out.println(i3); // 12345678
   
    }


}

 

728x90
반응형
LIST

'JAVA > JAVA기초' 카테고리의 다른 글

[JAVA기초] while문  (0) 2022.01.20
[JAVA기초] Switch문  (0) 2022.01.18
[JAVA기초] 연산 (Operate)  (0) 2021.11.02
[JAVA기초] 변수(variable) - 변수의 기본 , 기본형 변수  (0) 2021.10.31
[JAVA기초] println vs print 의 차이  (0) 2021.10.30