JAVA/수업 복습

자바 공부기록 09 - 캐스팅연산 & 자료의 형변환

본이qq 2022. 4. 5. 18:04

 

●연산의 우선순위
  1. ()
  2. 변수의 앞에 사용되었다는 가정하에 ++,--
  3. 곱셈, 나눗셈, 나머지(%)
  4. 덧셈, 뺄셈
  5. 비교(관계)연산
  6. 논리연산
  7. 대입연산

 

●캐스팅 연산 & 자료의 형변환

캐스팅 연산 - 서로 호환이 가능한 자료끼리만 사용이 가능합니다

-실수 -> 정수

 

1
2
3
public static void main(String[] args) {
        double d1 = 1.23456;
        int a = (int)d1; //a 변수에 1이 저장
cs

 

-정수 -> 실수

1
2
3
4
public static void main(String[] args) {
        double d1 = 1.23456;
        int a = (int)d1; //a 변수에 1이 저장
        double d2 = (double)a; // d2변수에 1.0이 저장
cs

 

-문자 -> 정수

 

1
2
3
public static void main(String[] args) {
        char c = 'A';        
        a = (int)c; // 문자 'A'에 해당하는 아스키코드 65 가 저장
cs

 

-정수 -> 문자

1
2
3
4
5
6
public static void main(String[] args) {
        char c = 'A';        
        a = (int)c; // 문자 'A'에 해당하는 아스키코드 65 가 저장
        
        a = 97;
        c = (char)97;
cs

 

 

 

 

 

 

●용량이 큰 변수값을 용량이 작은 변수에 저장해야 할 때 (반대의 경우는 캐스팅 없이 자유롭게 값 전달이 가능)

 

1
2
3
4
5
public static void main(String[] args) {
        long a2 = 1000;        
        int a3 = (int)a2;
        double f1 = 123.123;
        float f2 = (float)f1;
cs

 

잘못된 예(String -> int)
String s1 = "123";
int a4 = (int)s1; //String과 int간 호환정이 존재하지 않아 에러

잘못된 예 (int -> String)
int a4 = 123456;
String str2 = (String)a2; //에러

 

 

 

●호환이 되지 않는 자료들간의 형변환은 별도의 도구(메서드)가 필요

-String -> Int

1
2
3
public static void main(String[] args) {
        String str4 = "12346";        
        int b4 = Integer.parseInt(str4);
cs

 

-int -> String

1
2
3
public static void main(String[] args) {
        int b5 = 123456;        
        String str5 = String.valueOf(b5);
cs

 

-double ->String

1
2
3
public static void main(String[] args) {
        double d3 = 123.1234;
        String s3 = String.valueOf(d3); 
cs

 

-String -> double

1
2
3
public static void main(String[] args) {
        String s4 = "123.1234";
        double d4 = Double.parseDouble(s4);
cs

 

-String ->char

1
2
3
public static void main(String[] args) {
        String s5 = "ABCDEFG";
        char c5 = s5.charAt(0);
cs

 

-char -> String

1
2
3
public static void main(String[] args) {
        char c6 = 'A';
        String s6 = String.valueOf(c6);
cs