숯 / 바이트 / 짧은 타입 부가형 변환

원본 링크 :https://blog.csdn.net/LYRIC_315/article/details/47608063

먼저 다음 코드를 살펴


byte b1=1,b2=2;
b3=b1+b2;
final byte b4=4,b5=5;
b6=b4+b5;

일반 할당 여부를 B3, B5 물어?

대답이 같아야 정상적으로 B3 할당 될 수없고, 변환의 타입이 필요 B3 = (바이트) (B1 + B2), (B6)이 적절하게 할당 될 수있다.

분석 :

자바에서 산술 연산 기본 유형, 바이트 큰를 입력 할 작은 바이트 형식 변환의 현상이 일어날 때. 짧은 바이트를 들어, 문자는 INT 형 변수 바이트 연산 결과가 자동으로 INT 유형으로 변환 할 수보다 작다. 자바 컴파일에서 컴파일러 나 짧은 해당 int 데이터 형식, 부울위한 바이트 부호 확장 데이터 형식의 실행하고 해당 데이터 int 형에 제로 확장 문자 데이터 유형. 따라서, 프로세스에 부울, 바이트, 단기 및 문자들의 배열은 대응하는 타입 INT 바이트 코드 명령을 처리한다. 따라서, 전술 한 대부분의 데이터 타입의 동작은, 실제로 INT 입력에 대응하는 동작 방식으로 사용된다. 으로는 다음과 같습니다 :


short a=1, b=2;
short c=a+b;
System.out.println(c);

컴파일 할 때, 그들은 주에 "스레드에서 예외"보고 "상위를을 : 해결되지 않은 컴파일 문제 : 유형 불일치 : 짧은 INT에서 변환 할 수 없습니다", 그것은 볼 수있는 결과에 볼 수있는 + (B)가 int 형이라고 .

이 동작은 형식 변환 예외가 발생하지 않고 수행되는 경우, 최종 변수가 변경되는 경우에, 여기에 초점.


final short a=1, b=2;
short c=a+b;
System.out.println(c);

작업이 완전히 OK입니다 그래서, 변수의 기본 유형의 최종 수정에 대한 이유는, 그들 사이의 직접적인 작업이 하드 코딩 된 경우에도 중간 결과가 아닌, 직접 할당되었다, 형식 변환도 예외는 아니다 가.

추천

출처www.cnblogs.com/codecheng99/p/12431997.html