컴퓨터 관련/JAVA

[java 4강] 형변환 (캐스팅, casting)

승명 2016. 12. 18. 12:17

[java 4강] 형변환 (캐스팅, casting)



이번시간에는 형변환에 대해 알아보자.


자바개발자중 형변환때문에 고생을 안한 개발자는 없을것이다.


나역시 형변환 때문에 꾀나 고생을 하였다...


처음 시작하시는 분은 확실히 집고 넘어 갔으면 좋겠습니다...


java 형변환에는 2가지가 존재합니다.


명시적 형변환, 암묵적 형변환 입니다.


위선 쉬운 명시적 형변환에 대해 설명하겠습니다.


우선 저번 3강을 통해 변수를 알아 보았습니다.


(변수를 모르신다면 한번 읽어보시길 ... : http://bvc12.tistory.com/124 )


저번강의에서도 비슷한걸을 다루었는대요...


int 타입을 String 으로 바꾸어 보았습니다. 하지만 저번 예제에서 다루었던것이 암묵적 형변환입니다.


명시적 형변환은.. 프로그래머가 그러니깐 코딩을 하는 사람이 형변환을 알려주는것입니다.


바로 컴파일러 한테 알려주는것이죠...


예제를 하번 보도록 하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class HelloJava {
 
    public static void main(String[] args) {
        int a = 1;
        double b = 1.0;
        double c = 0;
        
        c = (double) a + b;
        
        
        
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
 
}

 


위의 예제의 결과 입니다.



int a 를 double a 로 형변환 해준것입니다.

(정수에서 -> 실수로)

int a 는  double a 로 변하여  double b 와 협쳐져 c 에 들어 간것입니다.


그래서 c의 값은 2.0 이 나온것입니다.


명시적 형변환에서 주의해야할점은 자료형이 큰 변수에서 자료형이 작은 변수로 이동할때 컴파일이 된다...


하지만 출력을 해보면 값이 짤려서 나올것이다... 이점을 꼭! 주의해야한다.


그럼 이제 암시적 형변환에대서 알아보자.


연산시 자동으로 형변황이 이루어 지는것을 말한다.


암시적 형변환은 자료 크기에 따라 컴파일러가 알아서 큰쪽으로 형변환을 해준다.


그럼 예제 이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class HelloJava {
 
    public static void main(String[] args) {
        int a = 1;
        double b = 1.0;
        double c = 0;
        
        c = (double) a + b;
        
        
        
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
 
}

 


위의 예제와 다른 예제이다.


명시적 형변환을 뺴고 실행해보았다.


과연 결과는?



이렇게 똑같은 값이나온다.


컴파일러가 알아서 암묵적 형변환을 하였기때문이다...


그럼 이런생각이 든다... 명시적 형변환을 할필요가 없는거 아닌가?


결론부터 말하자면... 그럴꺼면 명시적 형변환을 만들어 놓지도 않았을 것이다.


클래스를 불러서 쓰고, 메소드를 불러서 쓰다보면 분명히.... 형변환때문에 에러가 날것이다.


그때 당황하지말고 암묵적 형변환은 자료 크기 떄문에 낫엇다는것을 생각해 내고... 값의 그기가 작다면 명시적으로 형변환을 해주면된다..


만약 자료가 크다면 상위로 올라가서 변수의 크기를 변경해주어야 한다.


암묵적 형변환 에러를 예로 보여드리고 싶지만... 그러면 처음하시는 분들께선 아직 이해하기가 힘들다..


이런 부분들은 어쩔수 없이 자신이 코딩을 하면서 겪을수 밖에 없을것이다.. ㅎㅎ


아! 그리고 중요한 3가지만 더 말씀드리겠습니다.


1. boolean 을 제외한 나머지 7개의 기본형은 서로 형변환이 가능하다.

2. 기본형과 참조형은 서로 형변환 할수 없다.

3. 서로 다른 타입의 변수간의 연산은 형변환을 하는것이 원칙이지만, 값의 범위가 작은 타입에서 큰타입으로의 형변환은 생략할수 있다.(암묵적 형변환)


여튼 이번시간에는 형변환에 대해서 알아 보았습니다.

'컴퓨터 관련 > JAVA' 카테고리의 다른 글

[java 6강] 조건문  (0) 2016.12.18
[java 5강] 연산자  (0) 2016.12.18
[java 3강] 변수  (0) 2016.12.18
[java 2강] 주석(주석의 종류,주석의 사용법)  (0) 2016.12.18
java 설치 (jdk 설치)  (0) 2016.12.18