studyplan

자바의 데이터 타입과 캐스팅 ,묵시적 형변환/ java data type , casting/ 명시적 형변환 본문

자바정리

자바의 데이터 타입과 캐스팅 ,묵시적 형변환/ java data type , casting/ 명시적 형변환

무한머니 2022. 5. 29. 16:39
자바의 데이터형태엔 2 가지 모습이 있다
기본형과 참조형이있는데
오늘은 2 가지중에 기본형을 알아볼 생각이다.

정수 엔 byte , short ,int ,long 이 있고
        이 타입엔 각각 들어갈수있는 용량이 정해져 있는데
byte는 1 , short 2 ,int 4 ,long 8 만큼 들어간다
byte는 128 , short 32000 ,int 20억 ,long 900경 이라는 숫자를 담을수 있다
        요즘엔 하드웨어가 발전해서 보통 byte나 short는 잘 쓰지 않으므로
        기억만 해두자

소수를 포함한 실수형도 있는데
float가 4   double 8 의 용량을 차지한다
        왠만하면 double 을 쓰자

문자형에는
        char 의 용량은 2  /String 은 가변적으로 변한다 

 

이렇게 자바에는 많은 데이터 타입이 있는데 

연산 계산을 할때 는 무조건 같은 타입이어야만 서로 연산이 가능하다 

 


int a = 1;
double b = 1.0;
char c = '0';
String d = "0";
        int a = 1; // 크기 4
        double b = 1.0; // 크기 8
        char c = '1'; // 크기 2
        String d = "1"; // 크기 //무제한

//        int 에 서로 다른 문자를 더할때
        System.out.println(a + (int) b); //2

        // 단순히 char 에 int를 씌워서 계산하면
        // char 안에 숫자는 아스키코드로 변환되어서 '1' 은 49라는 숫자가 된다
        System.out.println(a + (int) c); // 1+49 //50

        // char 를 아스키코드로 변환을 막아주고 단순히 숫자로 변환시키려면
        // char(숫자)에 -'0' 을 하면 '1'이 숫자 1 로 바뀐다
        System.out.println(a + (c - '0')); // 2

        //System.out.println(a+(int)d); 불가

        System.out.println("======================================");

        System.out.println(b + (double) a); // 2.0

//        char 1 은 double로 바꿔도 49.0으로 바뀐다
        System.out.println(b + (double) c); // 1.0 +49.0 == 50.0

        // 이 계산에서 알아볼것은

//        casting이라는 개념인데
//        double 이 8로 int보다 공간이 큰데
//        char 인 c를 double 로 형변환을 하고
//        double을 int 로 바꿔서
//                double + int 였는데
//
//                double + double로 계산이 되어벼렸다
//
//                이를 우리는 암묵적 형 변환이라고 한다
//                그중에 작은것이 큰것으로 바뀌는걸 "묵시적 형 변환" 이라고 한다
//
        System.out.println(b + (int) (double) c); // 50.0
//        System.out.println(b+(double)d); 스트링은 아무리 계산해도 안됨

        System.out.println("======================================");



        // char 에 더해보자

        System.out.println(c+a); // char + int ? int 50
        System.out.println((c+a)*2); // (char + int) * (int) 2  = int 100 ?
//        결론 : char크기 2 , int크기 4 이고
//            char+int 는 int로 계산이 된다

        System.out.println(c+b); // char + double = double //
        // 데이터 값이 작은 char 이 int 가 됐다가 double 로 한번더 바뀌어서
//        char + double 값은 double로 됐다 그래서 50.0
        //
        System.out.println(c+d); //char + String 은 ?
        // 문자 + 문자 =  1+1은 11 로 옆에 붙어버린다
        System.out.println(c+d+c);
        // 문자 + 문자 + 문자 == 1+1+1 
        // 111 로 나온다
        System.out.println(c+d+a);
        // 문자 + 문자 + 숫자 = 1 + 1 + 1 
//        숫자가 문자로 바뀐다
        
//        여기서 정리 : 
//        크기가 작은 것은 무조건 큰것으로 치환이 된다는점이다 

 

 

 

 

 

 

 

Comments