logo

Java의 타입캐스팅

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.>