Java에서는 변수의 정의에서 복사, 숫자 변수 계산에 이르기까지 유형 변환이 종종 발생할 수 있습니다. 수치 변수 계산, 메소드 전송, 기본 클래스 및 파생 클래스 간 모델링 등의 유형 변환은 어디에서나 볼 수 있습니다. Java의 유형 변환은 Java 인코딩에서 중요한 역할을합니다.
변수를 정의 할 때주의를 기울여야 할 많은 문제가 있습니다. 조심하지 않으면 정확도 나 호환 유형을 잃게됩니다.
예를 들어:
1. 긴 정수 데이터를 정의 할 때 접미사 L 또는 L을 추가해야합니다.
LONG L = 123456789012345L
2. 단일 정밀 유형 (7-8 비트 유의 한 숫자)을 정의 할 때 접미사 F 또는 F를 추가해야합니다.
float f = 12.5f
3. 부울 유형은 다른 데이터 유형으로 변환 할 수 없습니다.
그중에서도 우리는 종종 데이터 유형 변환 문제를 겪습니다. 가장 일반적인 것은 암시 적 변환 및 캐스트 변환입니다. 분석합시다.
암시 적 변환
특징:
작게 크게 변환 할 수 있으며 데이터 유형이 자동으로 향상됩니다.
바이트, 짧은, char-> int -> long-> float -> double
참고 : 길이는 8 바이트이고 플로트는 4 바이트입니다.
길고는 정수이며 플로트는 부동 소수점 유형입니다. 정수 및 부동 소수점 번호에 대한 저장 규칙은 다릅니다. 긴 범위는 플로트보다 작습니다.
예:
바이트 a = 10;
int b = a;
intb = a가 컴파일되면 A는 int 유형으로 암시 적으로 변환됩니다.
케이스
특징:
대형에서 작은 것까지 (데이터 가이 데이터 유형으로 표시 될 수 있음을 분명히 알고 있다면 캐스팅을 사용할 수 있습니다).
체재:
(변환 된 데이터 유형) 변수 또는 값.
참고 : 일반적으로 캐스팅은 전혀 권장되지 않습니다.
Example 1:
int a = 10; 바이트 b = (바이트) a;
바이트 B = (바이트) a가 컴파일되면 A는 바이트 유형으로 캐스팅됩니다.
Example 2:
클래스 Qiangzhidemo {public static void main (String [] args) {byte b = (바이트) 130; System.out.println (b); // 인쇄 결과 -26}}분석:
데이터 130 기본값 int 유형 소수점 데이터에 대한 기본값,
1 단계 : 10 진수 130을 이진 데이터로 변환합니다.
10000010
2 단계 : 메모리에서 130의 표현은 다음과 같습니다.
원래 코드 : 000000000000000000000000000000000010
3 단계 : Int130의 보완 코드를 찾으십시오
130은 양수이기 때문에 역 코드 및 보완 코드는 원래 코드와 일치합니다.
보완 코드 : 00000000000000000000000000000000000010
4 단계 : 보완 코드를 가로 채고 마지막 8 자리 만 남습니다.
(바이트) 130의 보완 코드는 다음과 같습니다
5 단계 :이 보충을 원래 코드로 변환하십시오.
부호 비트 (첫 번째 비트)는 1이므로 숫자는 음수입니다.
역 코드 : 100000001 (보완 코드 -1)
원본 코드 : 111111110 (기호 비트는 변경되지 않으며 데이터 비트는 반전됩니다)
10 진수로 -126으로 변환하므로 마지막으로 -126을 인쇄하십시오.
Example 3:
반바지 = 1; s = s +1;
그리고
반바지 = 1; s+= 1;
문제가 있습니까? 왜?
분석:
첫 번째 프로그램은 오류를보고합니다 : 오류 : 호환되지 않는 유형 : int에서 짧은 것으로 변환 할 때 손실이있을 수 있습니다.
원인 : s = s+1; s+1은 int 유형으로 암시 적으로 변환됩니다. int 유형이 짧은 유형에 할당되면 손실 될 수 있습니다.
두 번째 프로그램은 컴파일 및 실행할 수 있습니다.
이유 : s+= 1, s = s+1으로 간주 될 수 있지만 여전히 차이가 있습니다. S+= 1의 캐스트, 즉 S = (Short) (S+1)가 있으므로 S+1의 값을 짧은 유형으로 강제하여 오류가 없습니다.
요약:
일부 미니 프로그램에서 데이터 유형 변환 문제가 발생하면 한 눈에 볼 수 있습니다. 그러나 거대한 시스템을 작성하고 엄청난 양의 데이터를 가질 때 이러한 작은 문제로 인해 시스템 오류가 발생하거나 심지어 충돌이 발생할 수 있으므로 초기 코드 작성의 엄격함을 파악해야합니다.
위의 내용은 Java 기본 암시 적 변환 대 캐스트 변환을 소개합니다.