2012-10-27 2 views

답변

2

어느 : 값이 바이트 범위의 사이에 들어가 16 진수를 사용하여

long FOO = 0xFE; //Use long as type 

또는

byte FOO = (byte)0xFE; //Typecast to byte. 

는 컴파일러 [-128, 127]을 확인한다. 0xFE127보다 크기 때문에 byte의 범위를 벗어 났으므로 int 또는 long을 사용해야합니다.

귀하의 예는 Narrowing conversion입니다.

8

0xFE은 에 해당하며 바이트 범위에 있지 않으므로 바이트로 저장하려고하면 암시 적 typecasting이 수행되지 않습니다. 바이트로 수용하려면 RHS 값이 [-128 to 127] 범위에 있어야합니다.

또는, explicit typecasting으로,이를 저장하기 위해 명시 적으로 컴파일러를 알 수 있습니다 :

byte FOO = (byte)0xFE; 

을하지만, 당신이 다음 명시 적으로 타입 캐스팅이 필요하지 않을 것입니다 byte의 범위에 들어갈 수있는 값을 저장하는 경우.

byte FOO = 0x20; // OK, can accommodate in byte. 

유형 변환에 대한 자세한 내용은 JLS - Section # 5.1을 참조하십시오. 구체적 JLS에서 문을 인용하면 Assignment Conversion

설명

그리고 JLS - Section # 5.2 - 변수의 타입 바이트 짧거나 문자이면

좁아 기본 변환 가 사용될 수있다 변수 표현식의 값은 변수의 유형으로 나타낼 수 있습니다.

관련 문제