>  기사  >  Java  >  Java의 유형 변환

Java의 유형 변환

PHPz
PHPz원래의
2024-08-30 15:12:18691검색

다양한 유형의 변수와 상수가 표현식 내에 결합되면 유사한 유형으로 변경될 수 있습니다. 사전 정의된 단일 유형을 다른 유형으로 변환하는 이 기술을 Java에서는 유형 변환이라고 합니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

유형 변환

프로그래밍 언어에서 사용하는 변환에는 두 가지 유형이 있습니다.

Java의 유형 변환

1. 암시적 유형 변환

프로그래머의 개입 없이 컴파일러를 통해 즉시 유형 변환이 수행되는 경우 이를 암시적 유형 변환이라고 합니다. 컴파일러는 기본적으로 모든 피연산자가 가장 큰 피연산자의 데이터 유형을 지향하도록 권장합니다. 데이터 변환 중에 데이터 손실이 발생하지 않습니다. 변환을 통해 예외가 발생할 가능성이 없으므로 유형이 안전하다고 알려져 있습니다. 더 작은 크기의 수량을 너무 큰 숫자로 변환하면 암시적 변환이 될 수 있습니다. 정수형 데이터를 float형으로 변환합니다.

float i=0;
int j=10;
i=j;

// float는 정수보다 클 수 있으므로 암시적 변환이 가능하므로 데이터 부족도 없고 예외도 없습니다.

2. 명시적 유형 변환

프로그래머를 통해 시행할 수 있는 유형 변환을 명시적 유형 변환이라고 합니다. 근본적으로 프로그래머는 특정 유형이 되도록 표현식을 만듭니다. 명시적 유형 변환은 유형 캐스팅으로 알려져 있습니다. 데이터 변환 중에 데이터 손실이 발생할 수도 있고 발생하지 않을 수도 있습니다. 따라서 세부 사항이 손실될 가능성이 있습니다. 타입 캐스팅 없이 수행하려고 하면 오류가 발생할 수 있습니다. 더 큰 숫자를 더 작은 숫자로 변환하는 것은 명시적 변환일 수 있습니다.

float k=123.456
int i= (int) k

// 이는 명시적 변환일 수 있으며 (int)는 유형 변환, 연산자입니다. 이 시점에서 우리는 예외를 피할 수 있지만 눈에 띄는 데이터 손실을 발견할 수 있습니다. 즉, i=123

// 변환 과정에서 .456이 삭제될 수 있습니다

Java의 유형 변환

다른 프로그래밍 언어와 마찬가지로 Java에는 두 가지 유형의 변환이 있습니다.

암시적 유형 변환

  • 이를 일반적으로 확대 변환이라고 하며, 더 넓은 데이터 유형으로 전환하고 있기 때문에 자동으로 수행할 수 있습니다. 따라서 32비트 정수가 있고 64비트 정수로 이동하려는 경우 더 넓어집니다. 따라서 값을 암시적으로 수행할 수 있도록 안전하게 이동할 수 있습니다. 컴파일러는 이러한 변환 방법을 결정해야 하며 규칙은 매우 간단합니다.
  • 여러 개의 (혼합) 정수 크기가 포함된 표현식이 있는 경우, 짧고 긴 정수 크기가 무엇이든 가장 큰 정수 크기로 변환됩니다. 따라서 short와 long으로 작업을 수행하면 short가 암시적으로 함께 캐스팅됩니다.
  • 부동 소수점 크기가 혼합된 연산을 수행하여 float와 double이 있는 경우 double이 가장 큰 부동 소수점 크기이기 때문에 항상 double로 이동합니다.
  • 그런 다음 혼합 정수 유형과 부동 소수점 유형을 사용하는 연산이 있는 경우 컴파일러는 방정식에서 가장 큰 부동 소수점으로 캐스팅합니다. 그래서 롱과 해상으로 작업을 수행하면 롱이 해상으로 캐스팅됩니다.
  • long과 double로 연산을 수행하면 long이 double로 변환됩니다.

명시적 유형 변환

  • 이 캐스트 연산을 사용할 때 코드에서 명시적으로 수행합니다. 그렇게 할 때, 우리는 그러한 유형의 개종의 결과로 일어나는 모든 일에 대해 책임을 지게 됩니다. 그렇기 때문에 확대 변환과 축소 변환을 모두 수행할 수 있습니다. 32비트에서 64비트로 넓어지고, 64비트에서 32비트로 좁아집니다. 우리는 잠재적으로 무슨 일이 일어날 수 있는지 알고만 있어야 합니다.
  • 부동 소수점에서 정수로 명시적으로 변환하면 부동 소수점은 분수 부분을 가질 수 있지만 정수는 가질 수 없으므로 부동 소수점을 정수로 변환할 때 분수 부분은 삭제됩니다.
  • 축소 변환을 수행할 때는 주의해야 합니다. 64비트 정수가 있는 경우 32비트 정수에 맞지 않을 정도로 큰 값을 보유할 수 있습니다.
  • 따라서 64비트를 32비트로 변환하면 프로그램이 실제로 이를 수행하지만, 값이 너무 커서 32비트에 맞지 않으면 이상한 결과를 얻게 됩니다. 그래서 축소 캐스트를 할 때 자신이 하고 있는 일이 안전한지 확인하고 싶습니다.
  • 그리고 마지막은 정수에서 부동 소수점으로 변환할 때 주의해야 한다는 것입니다. 왜냐하면 유효 자릿수가 많은 정수가 있는 경우 부동 소수점이 저장되는 방식 때문에 다음과 같은 일이 발생할 수 있기 때문입니다. 유효 숫자 중 일부를 잃어버리세요.

타입 변환 예시

아래에 자세히 언급된 유형 변환의 예:

코드:

Java의 유형 변환

여기에는 간단한 프로그램이 있습니다. 맨 위에는 float, double, byte, short, long이라는 선언이 있고 변수의 이름은 float과 같은 유형이 floatVal과 같은지 식별하는 데 도움이 됩니다.

코드:

Java의 유형 변환

길면 길다Val

코드:

Java의 유형 변환

프로그램이 실행되면 성공 메시지가 출력됩니다.

Java의 유형 변환

여기서 유형 변환 중 일부가 어떻게 작동하는지 살펴보겠습니다. 그럼 먼저 변수를 만들어 보겠습니다. 부족하니 그냥 결과라고 부르겠습니다.

사실, 계속해서 result1이라고 부르겠습니다. 그리고 간단한 과제를 해보자. 먼저 byteVal을 할당하겠습니다. 이제 예상대로 실행하면 성공적으로 실행됩니다.

코드:

Java의 유형 변환

출력:

Java의 유형 변환

확장 변환이기 때문에 바이트를 짧은 형식으로 할당할 수 있기 때문에 이것이 유효한 할당이라는 것을 알고 있습니다.

하지만 이 byteVal을 가져와 대신 longVal로 만들면 실제로는 long이 됩니다. 이것을 실행하면 호환되지 않는 유형, 긴 형식에서 짧은 형식으로의 변환이 손실될 수 있다는 오류 메시지가 표시됩니다.

코드:

Java의 유형 변환

Java의 유형 변환

그러면 여기서 할 수 있는 일은 명시적 캐스트를 수행하는 것입니다. 이 앞에서는 짧게 설명하겠습니다. 이제 유효하므로 실행할 수 있습니다.

코드:

Java의 유형 변환

물론 효과가 있습니다. 왜냐하면 그것이 축소전환이었기 때문에 롱이 숏으로 들어갈 수 없었기 때문입니다.

출력:

Java의 유형 변환

하지만 앞에 명시적 캐스트를 넣으면 이제 유효합니다. 원할 경우 캐스트 표기법을 매우 명시적으로 넣을 수 있으며 바이트 변환이 합법적이지만 거기에 짧은 캐스트를 넣어 명시적으로 캐스팅하고 있음을 보여주고 싶다고 말할 수 있습니다. 그건 완전히 합법적입니다.

코드:

Java의 유형 변환

출력:

Java의 유형 변환

이제 또 다른 시나리오를 살펴보겠습니다. result2,라고 부르는 또 다른 변수를 만들 예정이며 result2도 짧습니다. 여기서 우리가 원하는 것은 byteVal을 가져와서 longVal을 빼는 것입니다. 이제 우리는 표현식의 결과가 그 안에 있는 가장 큰 정수의 크기, 즉 길이가 되기 때문에 이것이 올바르지 않다는 것을 알고 있습니다.

코드:

Java의 유형 변환

그래서 이것을 실행하면 long을 short로 변환하는 것이 유효하지 않다는 오류가 발생합니다.

Java의 유형 변환

하지만 결과를 짧게 유지하고 싶다고 가정해 보겠습니다. 캐스팅을 해야 해요. 하지만 우리는 여기서 이 시간을 전체 결과의 가치로 캐스팅하고 싶습니다. 그래서 우리가 할 일은 여기서 짧은 출연진을 앞에 두는 것입니다.

여기서 쇼트캐스트를 앞에 두세요. 그리고 전체 내용을 괄호로 묶습니다. 그리고 실행해 보세요.

코드:

Java의 유형 변환

성공적으로 실행됩니다.

출력:

Java의 유형 변환

이제 result3이라는 또 다른 변수를 선언하되 이 변수는 long으로 선언하세요. 그래서 결과 3을 얻었습니다. 여기서 우리가 할 일은 longVal – floatVal을 할당하는 것입니다. 그래서 우리는 정수 유형과 부동 소수점 유형이 있을 때마다 결과가 부동 소수점 유형이 되기 때문에 float에서 long으로 변환하는 동안 오류가 손실됩니다.

코드:

Java의 유형 변환

Java의 유형 변환

이제 결과를 부동소수점으로 변환해 보겠습니다. 따라서 이를 플로트(float)로 만들어서 계속해서 실행할 수 있어야 합니다. 그리고 성공적으로 실행하세요.

코드:

Java의 유형 변환

출력:

Java의 유형 변환

하지만 이제 여기서 floatVal을 가져와 이를 doubleVal로 변환하고 이를 실행하려고 하면 오류가 발생합니다. 왜냐하면 정수를 수행할 때 결과가 double이 될 것이라고 나와 있기 때문입니다. 부동 소수점인 경우 방정식에서 가장 큰 부동 소수점의 크기입니다.

코드:

Java의 유형 변환

Java의 유형 변환

이제 결과를 두 배로 만들어서 실행해 보겠습니다.

코드:

Java의 유형 변환

출력:

Java의 유형 변환

결론

1. 변수는 Java에서 강력한 형식으로 지정됩니다
2. 기본 유형

  • 정수형, 부동소수점형, char형, 부울형

3. 유형 변환

  • 프로그램이 더욱 복잡해지면서 여러 데이터 유형이 포함될 가능성이 높기 때문에 서로 다른 유형 사이를 이동해야 하는 경우가 많습니다.
  • 컴파일러는 한 유형에서 더 큰 값을 보유할 수 있는 다른 유형으로 이동하여 확장되는 유형 변환을 처리할 수 있습니다.
  • 그러나 캐스팅을 사용하면 컴파일러가 자동으로 수행할 수 없는 변환 유형을 명시적으로 수행할 수도 있습니다.

위 내용은 Java의 유형 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:서블릿 아키텍처다음 기사:서블릿 아키텍처