Java의 타입 캐스팅은 캐스팅 연산자를 사용하여 한 데이터 유형을 다른 데이터 유형으로 변환하는 프로세스입니다. 하나의 기본 데이터 유형에서 다른 유형으로 값을 할당하는 것을 유형 캐스팅이라고 합니다. 특정 방식으로 변수를 사용하려면 이 방법을 사용하려면 한 데이터 유형의 변수를 다른 데이터 유형의 변수로 처리하도록 Java 컴파일러에 명시적으로 지시해야 합니다.
통사론:
variableName = () value;>
유형 캐스팅의 유형
Java에는 두 가지 유형의 유형 캐스팅이 있습니다.
- 확폭형 주조
- 내로우형 주조
확폭형 주조
확장 유형 캐스팅이라는 프로세스를 통해 낮은 데이터 유형이 더 높은 데이터 유형으로 변환됩니다. 암시적 유형 캐스팅 및 캐스팅 다운이 이에 대한 이름입니다. 그것은 자연적으로 발생합니다. 데이터 손실의 위험이 없으므로 안전합니다. 확장 유형 캐스팅은 다음과 같은 경우에 발생합니다.
100만개
- 대상 유형은 소스 유형보다 커야 합니다.
- 두 데이터 유형은 서로 호환되어야 합니다.
통사론:
larger_data_type variable_name = smaller_data_type_variable;>
자바
// Java program to demonstrate Widening TypeCasting> import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > int> i => 10> ;> > > // Wideing TypeCasting (Automatic Casting)> > // from int to long> > long> l = i;> > > // Wideing TypeCasting (Automatic Casting)> > // from int to double> > double> d = i;> > > System.out.println(> 'Integer: '> + i);> > System.out.println(> 'Long: '> + l);> > System.out.println(> 'Double: '> + d);> > }> }> |
>
>산출
문자열을 정수로 변환하는 방법
Integer: 10 Long: 10 Double: 10.0>
내로우형 주조
더 큰 데이터 유형을 더 작은 데이터 유형으로 축소하는 프로세스를 유형 캐스팅 축소라고 합니다. 캐스팅 업 또는 명시적 유형 캐스팅은 다른 이름입니다. 그것은 저절로 일어나는 것이 아닙니다. 명시적으로 그렇게 하지 않으면 컴파일 타임 오류가 발생합니다. 하위 데이터 유형의 허용되는 값 범위가 더 작기 때문에 데이터 손실이 발생할 수 있으므로 유형 캐스팅을 좁히는 것은 안전하지 않습니다. 캐스트 연산자는 명시적 캐스팅 프로세스를 지원합니다.
통사론:
smaller_data_type variable_name = (smaller_data_type) larger_data_type_variable;>
예:
자바
// Java Program to demonstrate Narrow type casting> import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > double> i => 100.245> ;> > > // Narrowing Type Casting> > short> j = (> short> )i;> > int> k = (> int> )i;> > > System.out.println(> 'Original Value before Casting'> > + i);> > System.out.println(> 'After Type Casting to short '> > + j);> > System.out.println(> 'After Type Casting to int '> > + k);> > }> }> |
>
>
셀렌산출
Original Value before Casting100.245 After Type Casting to short 100 After Type Casting to int 100>
명시적 캐스팅 유형
주로 명시적 캐스팅에는 두 가지 유형이 있습니다.
- 명시적 업캐스팅
- 명시적 다운캐스팅
명시적 업캐스팅
업캐스팅은 상속 트리의 위쪽 방향으로 하위 유형을 상위 유형으로 캐스팅하는 프로세스입니다. 하위 클래스 객체가 상위 클래스 참조 변수에 의해 참조되면 추가 노력 없이 자동 프로세스가 시작됩니다.
예:
자바
// Java Program to demonstrate Explicit Upcasting> import> java.io.*;> > class> Animal {> > public> void> makeSound()> > {> > System.out.println(> 'The animal makes a sound'> );> > }> }> > class> Dog> extends> Animal {> > public> void> makeSound()> > {> > System.out.println(> 'The dog barks'> );> > }> > > public> void> fetch()> > {> > System.out.println(> 'The dog fetches a ball'> );> > }> }> class> GFG {> > public> static> void> main(String[] args)> > {> // Upcasting> > Animal animal => new> Dog();> > // Calls the overridden method in Dog class> > animal.makeSound();> > // This would give a compile error as fetch() is not> > // a method in Animal class> > // animal.fetch();> > }> }> |
>
폰 노이만 아키텍처
>산출
The dog barks>
명시적 다운캐스팅
하위 클래스 유형이 상위 클래스의 객체를 참조하는 경우 프로세스를 다운캐스팅이라고 합니다. 수동으로 수행되면 컴파일러는 런타임 ClassCastException 오류를 발행합니다. 이는 instanceof 연산자를 통해서만 수행할 수 있습니다. 이미 업캐스트된 객체의 다운캐스트만 가능합니다.
예:
자바
// Java Program to demonstrate Explicit downcasting> import> java.io.*;> class> Animal {> > public> void> eat()> > {> > System.out.println(> 'The animal is eating.'> );> > }> }> > class> Cat> extends> Animal {> > public> void> meow()> > {> > System.out.println(> 'The cat is meowing.'> );> > }> }> > class> GFG {> > public> static> void> main(String[] args)> > {> > Animal animal => new> Cat();> > animal.eat();> > > // Explicit downcasting> > Cat cat = (Cat)animal;> > cat.meow();> > }> }> |
>
>산출
The animal is eating. The cat is meowing.>