2013년 9월 21일 토요일

[자바형변환,JAVA강좌,자바교육,자바강좌,자바기초교육]자바 묵시적/명시적인 형 변환(Java Casting)

[자바형변환,JAVA강좌,자바교육,자바강좌,자바기초교육]자바 묵시적/명시적인 형 변환(Java Casting)

1. 자바 묵시적 형변환
자바에서는 데이터의 손실이 없이 안정적으로 형 변환이 가능한 경우에는 자동적으로 묵시적인 형 변환을 시도하나 데이터의 손실을 야기할 가능성이 있는 경우엔 자동적인 형 변환을 방지한다.
객체 관계에서는 하위 클래스는 상위클래스로 묵시적 형변호나 가능하다.(upcasting)

- 대입 형 변환 (Assignment conversion)
float x;
x = 1;
f(float f) { },,,,,,        f(1);
float f() { return 1 }
- 산술 형 상승(Numeric promotion)
’a’ -> 97
3 + 2.1 -> 3.0 + 2.1 -> 5.1

2. 자바 명시적 형변환
- 형 변환 연산자 사용
큰 것을 작은 곳에 넣을 려면 명시적인 형 변환이 필요
(int)3.3 -> 3
int i; float f = 3.14f; i=f; -> Error
int i; float f = 3.14f; i=(int)f; -> Error는 아니지만 잘림
산술 자료형과 논리 자료형 및 참조 자료형 사이에는 현변환 불가능
산술 자료형과 논리 자료형 사이의 형 변환 효과
산술 자료형을  boolean형으로 -> i !=0
Boolean 자료형을 산술 자료형으로 변환 -> (x < y) ? 1 : 0

[예제]
class Test {
  public static void main (String args[])
    {
   int i = 1;
         long j = 2;
         j = i;       // 안전한 형변환
         f(i);        // 안전한 형변환
         i = (int)j;
         System.out.println("i=" + i); 
         //i = j;       // 오류: 묵시적 형변환 불가능
         g((int)j);
         //g(j);        // 오류: 묵시적 형변환 불가능
         i = (int) j; // 명시적 형변환을 통해서 해결
         g((int) j);  // 명시적 형변환을 통해서 해결
     }
     static void f(long j)
     {
      System.out.println("f()에서 j=" + j);
     }
     static void g(int i)
     {
      System.out.println("g()에서 i=" + i);
     }
}

[결과]
f()에서 j=1
i=1
g()에서 i=1
g()에서 i=1


오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  






댓글 없음:

댓글 쓰기