1-1)
-내가 작성한 코드
System.out.println(iNum1/iNum2); //자동
System.out.println((int)dNum); //강제
System.out.println((double)iNum1); //강제라고 할 순 없음
System.out.println(((double)iNum2)*dNum); // 강제
System.out.println(dNum);
System.out.println((double)iNum1/iNum2); // 강제라고 할 순 없음
System.out.println((int)fNum); // 강제
System.out.println(((int)fNum)/iNum1); // 강제
System.out.println(((double)iNum1)/fNum); // 강제라고 할 순 없음
System.out.println(); // 몰라
System.out.println(ch);
System.out.println((int)ch);
System.out.println(((int)ch)+iNum1);
System.out.println(); // 몰라
-선생님이 작성하신 코드
System.out.println(iNum1 / iNum2); // 2
System.out.println((int)dNum); // 2
System.out.println(iNum2 * dNum); // 10.0
System.out.println((double)iNum1); // 10.0
System.out.println(dNum); // 2.5
System.out.println((double)iNum1/iNum2); // 2.5
// System.out.println((double)(iNum1/iNum2)); // 2.0 ==> 이미 나눠진 몫을 가지고 double로 형변환 해서
System.out.println((int)fNum); // 3
System.out.println(iNum1 / (int)fNum); // 3
System.out.println(iNum1/fNum);// 3.3333333
System.out.println(iNum1/(double)fNum); // 3.3333333333333335
System.out.println(ch); // 'A'
System.out.println((int)ch); // 65
System.out.println(ch + iNum1); // 75
System.out.println((char)(ch+iNum1)); // 'K'
-선생님과 나와 다른 코드 비교하기
1) 10.0 출력
나 - System.out.println(((double)iNum2)dNum);
선생님 - System.out.println(iNum2 dNum);
▶ 자동 형변환을 해주는데 왜 굳이 저렇게 썼는지....
2) 3 출력
나 - System.out.println(((int)fNum)/iNum1);
선생님 - System.out.println(iNum1 / (int)fNum);
▶내가 앞 뒤 바꿔 썼음
3) 3.3333333 출력
정답 - System.out.println(iNum1/fNum);
4) 3.3333333333333335
정답 - System.out.println(iNum1/(double)fNum);
▶자릿수가 많다는건 더 정확하다는 뜻
5) 75 출력
정답 - System.out.println(ch + iNum1);
6) K 출력
정답 - System.out.println((char)(ch+iNum1));
▶char로 위에서 계산한 75 자체를 형변환 해주는 행위
1-2)
-내가 작성한 코드
package com.kh.practice2.func;
import java.util.Scanner;
public class CastingPractice2 {
public void casting2 () {
Scanner sc = new Scanner(System.in);
System.out.print("국어 : ");
double first = sc.nextDouble();
System.out.print("영어 : ");
double second = sc.nextDouble();
System.out.print("수학 : ");
double third = sc.nextDouble();
int sum = (int)(first + second + third);
int div = (int)((first + second + third)/3);
System.out.println("총점 : " + sum);
System.out.println("평균 : " + div);
}
}
-선생님이 작성하신 코드
package com.kh.practice2.func;
import java.util.Scanner;
public class CastingPractice2 {
public void method() {
Scanner sc = new Scanner(System.in);
System.out.print("국어 : ");
double kor = sc.nextDouble();
System.out.print("영어 : ");
double eng = sc.nextDouble();
System.out.print("수학 : ");
double math = sc.nextDouble();
// double sum = kor + eng + math;
// double avg = sum / 3;
// System.out.println("총점 : " + sum);
// System.out.println("평균 : " + avg);
int sum = (int)(kor + eng + math);
int avg = sum / 3;
System.out.println("총점 : " + sum);
System.out.println("평균 : " + avg);
}
}
1-3)
선생님이 작성하신 코드
package com.kh.practice2.func;
import java.util.Scanner;
public class CastingPractice1 {
public void method() {
Scanner sc = new Scanner(System.in);
System.out.print("문자 : ");
char ch = sc.nextLine().charAt(0);
System.out.println(ch + " unicode : " + (int)ch);
}
}
문자열인 next나 nextLine 사용해야함
"unicode : " + (int)str"이 안되는 이유
string은 기본 자료형이 아닌 클래스 이기 때문에 형변환이 안됨
만일, String str = sc.nextLine();으로만 작성한다면 str안에 담긴 A를 숫자로 바꾸겠다. 라는 의미가 되어버리는데,
숫자 형태로 되어있는 문자열 외에 다른 것들은 숫자로 바꿀 수 가 없다 . 20, 100, -12 누가봐도 숫자 형태인 것 말고는 A나 띄어쓰기는 숫자로 바꿀 수 없는 형태이다.
그래서 char ch = str.charAt(0); 로 넣어준다.
system.out.println("unicode : " + ch")는 그대로 A가 나오기 때문에 마지막에 int 로 형변환만 해주면 된다.