जवाबों:
आप नहीं कर सकते। एक बुनियादी संख्यात्मक स्थिरांक को एक पूर्णांक माना जाता है (या यदि "L" द्वारा अनुसरण किया जाता है), तो आपको इसे एक पैरामीटर के रूप में पारित करने के लिए इसे बाइट के लिए स्पष्ट रूप से डाउनकास्ट करना होगा। जहां तक मुझे पता है कि कोई शॉर्टकट नहीं है।
byte b(int i) { return (byte) i; }
कहीं पर एक सरल सहायक विधि को परिभाषित कर सकते हैं और इसे सांख्यिकीय रूप से आयात कर सकते हैं। तब आप f (b (10)) लिख सकते हैं।
आपको कास्ट करना है, मुझे डर है:
f((byte)0);
मेरा मानना है कि निष्पादन समय के बजाय संकलन- समय पर उचित रूपांतरण करेगा , इसलिए यह वास्तव में प्रदर्शन दंड का कारण नहीं होगा। यह सिर्फ असुविधाजनक है :(
आप जावा में एक बाइट शाब्दिक ... का उपयोग कर सकते हैं।
byte f = 0;
f = 0xa;
0xa
(int शाब्दिक) स्वचालित रूप से बाइट के लिए डाली जाती है। यह एक वास्तविक बाइट शाब्दिक नहीं है (नीचे देखें जेएलएस और टिप्पणियां), लेकिन अगर यह एक बतख की तरह बंद हो जाता है, तो मैं इसे बतख कहता हूं।
आप यह नहीं कर सकते:
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
1
एक अंतर शाब्दिक है, लेकिन double d = 1;
ठीक संकलन करता है।
byte b(int i){}
, फिर b(1)
जितना लंबा और उससे कम मुश्किल हो f=1
।
यदि आप कोड में शाब्दिक रूप से उत्तीर्ण कर रहे हैं, तो आपको समय से पहले घोषित करने से क्या रोक रहा है?
byte b = 0; //Set to desired value.
f(b);
public static final byte BYTE_MASK = ( byte )0xff;
byte BYTE_MASK = 0x000000ff;
ऐसा लगता है कि मुझे कुछ बुरा संकेत एक्सटेंशन कीड़े मिले।
विधि के साथ ओवरराइड करने के बारे में क्या
void f(int value)
{
f((byte)value);
}
यह अनुमति देगा f(0)
जावा 7 और बाद के संस्करण के साथ, आप इस तरह से एक बाइट शाब्दिक निर्दिष्ट कर सकते हैं:
byte aByte = (byte)0b00100001;
संदर्भ: http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html