簡體   English   中英

你如何在 Java 中指定字節文字?

[英]How do you specify a byte literal in Java?

如果我有方法

void f(byte b);

如何在不進行強制轉換的情況下使用數字參數調用它?

f(0);

給出一個錯誤。

你不能。 基本數字常量被認為是整數(如果后面跟有“ L”,則為整數),因此必須將其顯式下轉換為字節,以將其作為參數傳遞。 據我所知,沒有捷徑可走。

恐怕您必須投下:

f((byte)0);

我相信它將在編譯時而不是執行時執行適當的轉換,因此實際上不會造成性能損失。 只是不方便:(

您可以在Java中使用字節文字…。

    byte f = 0;
    f = 0xa;

0xa (int文字)將自動轉換為字節。 它不是真正的字節文字(請參閱下面的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM