반응형


안니웅하시응가요우으

재미나고 활기차게 아재 개그로

썸네일을 시작해봤어!!

 

오늘 할것은?? 

형변환이야!

 

이 녀석.. 생각보다 머리아프지만

자주쓰는 녀석이기도하고

자주 쓰다보면 

아주 술술~ 쓰는 녀석이기도해

에러도 자주 볼테고 말이야

 

간만에 스~윽 풀어보자링


짜라라란!

내가 열심열심 만들어왔는데 이건 한번쯤 봤을법한

수의 체계라는것이야!

 

 

숫자라고 해서 머리 아파할 필요는 없어!

이전에 정리했던 내용들이 나오니까 ㅎㅎ

그런 이유로 다시 꺼내 봤오

 

https://kecoz.tistory.com/69?category=841308

 

이건 기본형 타입인데, 숫자만 놓고 보았을때,

뭐가 더큰지 보려고해!

 

" 큰수는 당연히 long이 큰거아님!? 920경이 누구집 애 이름도 아니구 ㅇㅇ"

 

그래서 정리 하자면

byte < short 또는 char < int < long < float < double 순이야!

 

" 왜 실수가 더 큰거냐!"

 

그 이유는 엄연하게 소숫점 뒷자리의 수를 봐야해!

그래서 위 게시글에 올려둔 코드 중, 일부를 보면

어때? 그건 바로 뒷자리를 담는 양 자체가 다르다 이거야

정수는 뒷자리를 담지 못하지만

실수는 뒷자리를 마구마구 담는것 자체에서

메모리를 차지하는 비율에서 차이가 나지

 

이 정도로 간단히 해두고,

"그래서 형변환이 무어냐고!"


형변환 종류


묵시적 형변환(암묵적 형변환)

 

변수나 리터럴 값을 다른 타입으로 변환하는걸 말하는거야!

주로 작은 타입 -> 큰 타입으로 변환을 하는데

예를 들면 int에서 long으로 변환하는걸

형변환 한다~ 라고 하는거야

 

그렇다면 float -> double로 변환하는 것도 형변환이 되겠지?

 

코드를 스윽

package project;
public class ImplCasting {
    public static void main(String[] args) {
        
        //int a 변수에 21억을 집어넣었다!
        int a = 2100000000;          
        System.out.println(b);
        
    }
}

 

 

 

결과

 

당연 출력결과가 정상 출력이 되겠지!?

 

이걸 더 큰 타입의 float로 암묵적 형변환을 해보자!

package project;
public class ImplCasting {
    public static void main(String[] args) {
        
        //int a 변수에 21억을 집어넣었다!
        int a = 2100000000;  
            
        //float b 변수에 int a 변수를 대입 이렇게 하면 형변환됌!
        float b = a;
        
        System.out.println(b);
        
    }
}

 

 

결과

 

와우 2.1E9로 깰끔하게 형변환 완료!

 

어때? 묵시적 형변환 참 쉽지?


명시적 형변환

 

이건 묵시적의 반대 개념으로

큰 타입 - > 작은 타입으로 변환하는 개념이야

 

즉, long -> int로 변환을 하거나

double -> float로 변환하거나!

 

혹은 그 외, 더 작은 형태로 형변환을 하는걸

명시적 형변환이라고 해!

 

코드코드 써보자!

 

package project;
public class ExplCasting {
    public static void main(String[] args) {
        
        //float a 변수에 3.1444445F 를 집어넣었다!
        float a = 3.1444445F;  
        
        System.out.println(a);
        
    }
}

 

결과

 

 

그렇다면 이 친구는 낮은 타입의 int로 명시적 형변환을 해볼게!

 

 

 

-- 여기서 주의점! --

 

package project;
public class ExplCasting {
    public static void main(String[] args) {
        
        //float a 변수에 3.1444445F 를 집어넣었다!
        float a = 3.1444445F;  
    
        //int b 변수에 float a 변수를 집어넣었다!
        int b = a;
        System.out.println(b);
        
    }
}

명시적 형 변환은

위 코드처럼 묵시적 형변환 형변환을 할 수 없어!

 

결과

 

 

"난 이 형 변환 반댈세!"

 

 

그럼 어떻게 해야할까?

 

package project;
public class ExplCasting {
    public static void main(String[] args) {
        
        //float a 변수에 3.1444445F 를 집어넣었다!
        float a = 3.1444445F;  
    
        //int b 변수에 float a를 (int)라고 알려주고 변수를 집어넣었다!
        int b = (int) a;
        System.out.println(b);
        
    }
}

 

결과

 

 

와우. 언빌리버블버블

 

어때 참 쉽지??

만약 long이면? (long) 으로 해주면 되겠지?


오늘은 형변환에 대해서 알아보았어!

 

이게 여기서 한가지 문제가 있는데

Java는  객체지향형이다 보니,

타입에 대해 민감한 녀석이거든

그래서 귀찮아도 이러한 작업을 거치는거야

만약! String 타입의 1234를 int로 바꾼다?

가능은해!

하지만 위에 적어둔 방식이 아닌 

다른 타입으로 변경을 하는데

 

그걸 래퍼타입이라고 그래

 

쌈디형 내가 리스펙하는거 알지 형? 출처 : 쌈디형인스타

이 래퍼가 아닌 다른 의미의 래퍼이기에



 

그럼 20000!

 

 

 

 

 

반응형