hyeonga_code

Java_15_형 변환 Type Casting 본문

Java

Java_15_형 변환 Type Casting

hyeonga 2023. 9. 15. 06:59
반응형

 

- 형 변환_Type casting
        - 값의 크기에 따라 명시적, 묵시적 형 변환을 사용할 수 있습니다.
        - 자동 형 변환 _ 작은 자료형에서 큰 자료형으로 이동합니다.
        - 강제 형 변환 _ 큰 자료형에서 작은 자료형으로 이동할 때 (바꾸고자 하는 자료형)을 붙여 작업합니다.
        - 실수형은 정수형보다 항상 크다.
            double > float > long > int
        - char_ 문자형이므로 음수가 없으므로 byte나 int형으로 변환이 불가능합니다.
        - int 이상의 자료형에서의 연산 결과는 큰 자료형 값으로 표시됩니다.
        - int 이하의 자료형에서의 연산 결과는 int 값으로 표시됩니다.
        - 형변환은 되도록 하지 않는 것이 좋습니다.
            - 값의 유실이 있을 수 있기 때문입니다.

'TypeCasting.java'
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package basic;
 
public class TypeCasting{
    public static void main(String[] args) {
        byte a = 10;
        int b = a;
        //자동 형 변환 _ 크기가 1인 a 값을 크기가 8인 b 값에 자동으로 들어간다.
 
        System.out.println(a);    // 10
        System.out.println(b);    // 10
        //byte c = b;
        // 크기가 8인 b 값을 크기가 1인 c 값에 자동으로 들어갈 수 없다.
        byte c = (byte)b;
        // 강제 형 변환 _ 크기가 큰 자료형을 작은 자료형으로 변환하기 위함
        System.out.println(c);    // 10
 
        byte a2 = 10;
        char b2 = (char)a2;
        short c2 = (short)b2;
        char d = (char)c2;
        byte e = (byte)d;
 
        System.out.println(b2);    //
        System.out.println(c2);    // 10
        System.out.println(d);    // 
        System.out.println(e);    // 10
 
        String name = "홍길동";
        System.out.println(name);    // 홍길동
    }
}
 
cs

 


'TypeCasting.java'
=====

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package basic;
 
public class TypeCasting{
    public static void main(String[] args) {
        byte a = 10;
        byte b = 10;
        // byte c = a + b;
        /* 오류 _ Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    Type mismatch: cannot convert from int to byte */
        int c = a + b;
        System.out.println(c);    // 20
        // 가능
        byte c2 = (byte)(a + b);
        // int형으로 받아줘야 하므로 byte형으로 변환시켜야 함
        System.out.println(c2);    // 20
 
        int d = 10;
        float e = 10.23f;
        // int f = d + e;
        /* 오류 _ Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from float to int */
        int f = (int)(d + e);
        // float이 int 보다 큰 값이므로 int형으로 변환해주어야 한다.
        System.out.println(f);    // 20
    }
}
 
cs
 
반응형