[자바형변환,JAVA강좌,자바교육,자바강좌,자바기초교육]자바 묵시적/명시적인 형 변환(Java Casting)
1. 자바 묵시적 형변환
자바에서는 데이터의 손실이 없이 안정적으로 형 변환이 가능한 경우에는 자동적으로 묵시적인 형 변환을 시도하나 데이터의 손실을 야기할
가능성이 있는 경우엔 자동적인 형 변환을 방지한다.
객체 관계에서는 하위 클래스는 상위클래스로 묵시적 형변호나 가능하다.(upcasting)
객체 관계에서는 하위 클래스는 상위클래스로 묵시적 형변호나 가능하다.(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)3.3 -> 3
int i; float f = 3.14f; i=f; -> Error
int i; float f = 3.14f; i=(int)f; -> Error는 아니지만 잘림
int i; float f = 3.14f; i=(int)f; -> Error는 아니지만 잘림
산술 자료형과 논리 자료형 및 참조 자료형 사이에는 현변환 불가능
산술 자료형과 논리 자료형 사이의 형 변환 효과
산술 자료형을 boolean형으로 -> i !=0
Boolean 자료형을 산술 자료형으로 변환 -> (x < y) ? 1 : 0
산술 자료형을 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);
}
{
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
i=1
g()에서 i=1
g()에서 i=1
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
[개강확정 강좌]
[평일저녁9/24]iPhone 하이브리드 앱 개발 실무과정
[평일저녁9/26]Spring3.X, MyBatis, Hibernate실무과정 
[주말9/28] 웹퍼블리싱 마스터 
댓글 없음:
댓글 쓰기