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
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주말]
[10/26]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/31]JAVA&WEB프레임워크실무과정
[11/1]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[10/26]C#,ASP.NET마스터
[11/2]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/31]JAVA&WEB프레임워크실무과정
[11/1]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[기타
다른 강좌는 아래 해당 카테고리를 클릭해주세요]
댓글 없음:
댓글 쓰기