JAVA/java 문제

[자바JAVA] 변수- 자동캐스팅 , 강제캐스팅 결과값 출력하기

자바칩 프라푸치노 2020. 9. 10. 07:23

안녕하세요 자바칩 프라푸치노입니다.

오늘은 문제를 한번 풀어보겠습니다.

자동캐스팅한 결과값을 나타내라고 하네요!

한번 가봅시다.

하나하나 따져보죠.

byteValue를 intValue로 자동 캐스팅이라..

그러면 byte를 int로 대입해야한다는 거겠죠.

대입 연산자는 오른쪽에서 왼쪽!

그러니까 왼쪽에는 int가 있어야 하고 오른쪽에는 byte가 있어야합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package sec01_verify;
 
public class E5_PromotionExample {
 
    public static void main(String[] args) {
    
 
        int intValue;
        byte byteValue = 10;
        intValue = (int)byteValue;
        System.out.println("byteValue값을 intValue로 자동캐스팅 결과값 :" + intValue);
        
        
    }
 
}
 
cs

그러니까 이렇게 되겠네요.

여기서 세번째 줄 intValue = (int)byteValue; 이렇게 적어주었는데

자동 캐스팅에서는 괄호 안의 값을 생략해주어도 됩니다.

그러면 뭐가 나오나요?

확인해볼까요?

이렇게 나왔네요.

 

그 다음은 

charValue값을 intValue로 자동캐스팅 결과값(유니코드) : 44032

이렇게 나와야하네요.

charValue 는 '가'로 초기화를 했고, 

마찬가지로 char을 int로 자동캐스팅한다했으니

= 의 왼쪽에 int, 오른쪽에 char이 와야겠네요,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package sec01_verify;
 
public class E5_PromotionExample {
 
    public static void main(String[] args) {
    
 
        int intValue;
        byte byteValue = 10;
        intValue = (int)byteValue;
        System.out.println("byteValue값을 intValue로 자동캐스팅 결과값 :" + intValue);
        
        char charValue = '가';
        intValue = (int)charValue;
        System.out.println("charValue값을 intValue로 자동캐스팅 결과값(유니코드) : " + intValue);
    }
 
}
 
cs

가의 유니코드 값이 44032입니다.

출력해봅시다.

이렇게 잘 나왔습니다.

 

 

intValue값을  longValue로 자동캐스팅 결과값          : 500

세번째는 이렇게 출력을 하라고 합니다.

longValue에는 intValue를 대입하고,

intValue의 값을 longValue로 자동캐스팅한 결과값이 500이어야한다고 하네요.

그러면 intValue에 500을 넣고

자동 캐스팅을 해주면 되겠네요!

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package sec01_verify;
 
public class E5_PromotionExample {
 
    public static void main(String[] args) {
    
 
        int intValue;
        byte byteValue = 10;
        intValue = (int)byteValue;
        System.out.println("byteValue값을 intValue로 자동캐스팅 결과값 :" + intValue);
        
        char charValue = '가';
        intValue = (int)charValue;
        System.out.println("charValue값을 intValue로 자동캐스팅 결과값(유니코드) : " + intValue);
 
        intValue = 500;
        long longValue = intValue;
        System.out.println("intValue값을  longValue로 자동캐스팅 결과값          :" + longValue );
    }
 
}
 
cs

이렇게 잘 나왔네요.

 

이제 마지막

intValue값을  doubleValue로 자동캐스팅 결과값        : 200.0

이렇게 출력을 하라고 하네요.

doubleValue에 intValue의 값을 대입한 후 자동캐스팅을 하라고 하네요.

그럼 마찬가지로 intValue에 200을 대입한 후 자동캐스팅을 해주면 되겠습니다.

 

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 sec01_verify;
 
public class E5_PromotionExample {
 
    public static void main(String[] args) {
    
 
        int intValue;
        byte byteValue = 10;
        intValue = (int)byteValue;
        System.out.println("byteValue값을 intValue로 자동캐스팅 결과값 :" + intValue);
        
        char charValue = '가';
        intValue = (int)charValue;
        System.out.println("charValue값을 intValue로 자동캐스팅 결과값(유니코드) : " + intValue);
 
        intValue = 500;
        long longValue = intValue;
        System.out.println("intValue값을  longValue로 자동캐스팅 결과값          :" + longValue );
 
        intValue = 200;
        double doubleValue = intValue;
        System.out.println("intValue값을  doubleValue로 자동캐스팅 결과값        :" + doubleValue);
    }
 
}
 
cs

원하는 대로 다 나왔습니다.

참 쉬운 예제였습니다. ㅎㅎ

그럼 조금 더 풀어봅시다.

 

앞의 문제를 응용하여 저렇게 출력하랍니다.

반대로 강제 캐스팅이네요.

 

첫번째로, int형을 char형으로 강제캐스팅한다..

그러면 int형을 char에 대입하는거네요.

그럼 대입연산자는 오른쪽에서 왼쪽으로!

왼쪽에는 char이오고, 오른쪽에는 int가 오겠네요.

int를 char로 바꿨을때 '가'가 출력되려면 int에는 뭐가 와야하나요?

유니코드 44032가 와야겠죠!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package sec01_verify;
 
public class E5_PromotionExample {
 
    public static void main(String[] args) {
    
 
        int intValue = 44032;        
        char charValue = (char)intValue;
        System.out.println("intValue값을 charValue로 강제캐스팅 결과값 :" + charValue);    
}
 
}
 
cs

이렇게 적었습니다.

강제 캐스팅을 할때는 괄호 안의 타입을 절대 생략하면 안됩니다.

출력결과 이렇게 되었네요.

 

두번째 세번째도 마찬가지로 해보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package sec01_verify;
 
public class E5_PromotionExample {
 
    public static void main(String[] args) {
    
 
        int intValue = 44032;        
        char charValue = (char)intValue;
        System.out.println("intValue값을 charValue로 강제캐스팅 결과값 :" + charValue);    
 
        long longValue = 500;
        intValue = (int)longValue;
        System.out.println("longValue값을 intValue로 강제캐스팅 결과값 : " + intValue);
        
        double DoubleValue = 3;
        intValue = (int)DoubleValue;
        System.out.println("doubleValue값을 intValue로 강제캐스팅 결과값 :" + intValue);
    }
 
}
 
cs

역시나 이렇게 잘 출력된 것을 볼 수 있네요.

오늘은 강제캐스팅, 자동캐스팅에 대해서 알아보았습니다.

 

 고생하셨습니다.

 

728x90