형변환 (23.04.17)

·2023년 4월 17일
0

Coding Test

목록 보기
1/39
post-thumbnail

✏️ 문제 1

Q. 소문자 'a' 보다 10칸 뒤에 있는 문자는 무엇일까?

  • 풀이
	char ch1 = 'a';
	System.out.println((char)((int)ch1+10));
    // 풀이 1
    // 1. ch1을 정수형 (int)로 강제 형변환
    // 2. (int)ch1 + 10 -> 정수형끼리 계산
    // 3. ((int)ch1 + 10)을 문자열인 (char)로 다시 형변환
    
	System.out.println((char)(ch1+10));
    // 풀이 2
	// 1. ch1은 int 타입으로 자동 형변환되므로 강제 형변환을 할 필요가 없음. 바로 10을 더해 줌.
    // 2. 정수 값인 (ch1+10)를 (char)로 강제 형변환

✏️ 문제 2

선언 및 초기화된 5개의 변수를 가지고 알맞은 사칙연산(+, -, *, /)과 형변환을 이용하여 주석에 작성되 값과 같은 결과가 나타나도록 코드를 완성하세요.

public class CastingPractice1 { 
public static void main(String[] args) {
int iNum1 = 10;
int iNum2 = 4;
float fNum = 3.0f;
double dNum = 2.5;
char ch = 'A';
System.out.println( iNum1 iNum2 ); // 2
System.out.println( dNum ); // 2
System.out.println( iNum2 dNum ); // 10.0
System.out.println( iNum1 ); // 10.0
System.out.println( iNum1 iNum2 ); // 2.5
System.out.println( dNum ); // 2.5
System.out.println( fNum ); // 3
System.out.println( iNum1 fNum ); // 3
System.out.println( iNum1 fNum );// 3.3333333
System.out.println( iNum1 fNum ); // 3.3333333333333335
System.out.println( ch ); // 'A'
System.out.println( ch ); // 65
System.out.println( ch iNum1 ); // 75
System.out.println( (ch iNum1) ); // 'K'
  • 풀이
		System.out.println( iNum1 / iNum2 ); // 2
		System.out.println( (int)dNum ); // 2
		// (int)로 자동 형변환
		
		System.out.println( iNum2 * dNum ); // 10.0
		// (double)로 자동 형변환
		System.out.println( (double)iNum1 ); // 10.0
		
		System.out.println( (double)iNum1 / (double)iNum2 ); //2.5
		// System.out.println( (double)iNum1 / iNum2 );
		// System.out.println( iNum1 / (double)iNum2 );
		// 하나의 값만 (double)로 형변환을 하면 결과 값이 (double)로 자동 형변환이 된다.
		System.out.println( dNum ); // 2.5
		
		System.out.println( (int)fNum ); // 3
		System.out.println( iNum1 / (int)fNum ); // 3
		
		System.out.println( iNum1 / fNum ); // 3.3333333
		System.out.println( (double)iNum1 / fNum ); // 3.3333333333333335
		// float와 double의 차이점
		// float : 소수점 아래 8번째 자리까지 연산 후 반올림
		// double : 소수점 아래 16번째 자리까지 연산 후 반올림
		
		System.out.println( "'"+ch+"'" ); // 'A'
		System.out.println( (int)ch ); // 65
		System.out.println( ch + iNum1 ); // 75
		System.out.println( "'"+(char)(ch + iNum1)+"'" ); // 'K'
profile
풀스택 개발자 기록집 📁

0개의 댓글