Java에서 바이트 리터럴을 어떻게 지정합니까?
내가 방법이 있다면
void f(byte b);
캐스팅하지 않고 숫자 인수로 어떻게 호출 할 수 있습니까?
f(0);
오류가 발생합니다.
당신은 할 수 없습니다. 기본 숫자 상수는 정수 (또는 "L"뒤에 오는 경우 긴 정수)로 간주되므로이를 바이트로 명시 적으로 다운 캐스트하여 매개 변수로 전달해야합니다. 내가 아는 한 바로 가기가 없습니다.
당신은 캐스팅해야합니다.
f((byte)0);
나는 그것이 실행 시간 대신 컴파일 타임에 적절한 변환을 수행 할 것이라고 믿기 때문에 실제로 성능 저하를 초래하지는 않습니다. 그것은 단지 불편합니다 :(
자바에서 바이트 리터럴을 사용할 수 있습니다.
byte f = 0;
f = 0xa;
0xa
(int literal)은 자동으로 바이트로 캐스트됩니다. 실제 바이트 리터럴이 아니지만 (아래 JLS 및 주석 참조) 오리처럼 떨리면 오리라고 부릅니다.
당신이 할 수없는 것은 이것입니다 :
void foo(byte a) {
...
}
foo( 0xa ); // will not compile
다음과 같이 캐스팅해야합니다.
foo( (byte) 0xa );
그러나 이것들은 모두 컴파일되고 "바이트 리터럴"을 사용한다는 것을 명심하십시오.
void foo(byte a) {
...
}
byte f = 0;
foo( f = 0xa ); //compiles
foo( f = 'a' ); //compiles
foo( f = 1 ); //compiles
물론 이것도 컴파일
foo( (byte) 1 ); //compiles
코드에 리터럴을 전달하는 경우 단순히 미리 선언하지 못하는 이유는 무엇입니까?
byte b = 0; //Set to desired value.
f(b);
메소드를 재정의하는 것은 어떻습니까?
void f(int value)
{
f((byte)value);
}
이것은 허용합니다 f(0)
Java 7 이상 버전에서는 다음과 같이 바이트 리터럴을 지정할 수 있습니다. byte aByte = (byte)0b00100001;
참조 : http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html
참고 URL : https://stackoverflow.com/questions/5193883/how-do-you-specify-a-byte-literal-in-java
'IT story' 카테고리의 다른 글
클래스 데이터 멤버“:: *”의 포인터 (0) | 2020.04.24 |
---|---|
IIS 7 AppPool ID를 SQL Server 로그온으로 추가 (0) | 2020.04.24 |
C에서 함수 포인터의 typedef 이해 (0) | 2020.04.23 |
안드로이드 앱에서 인터넷 연결을 확인하기위한 방송 수신기 (0) | 2020.04.23 |
JavaScript % (모듈로)는 음수에 대해 음수 결과를 제공합니다. (0) | 2020.04.23 |