উত্তর:
তুমি পার না. একটি মৌলিক সংখ্যাসূচক ধ্রুবকটিকে একটি পূর্ণসংখ্যা হিসাবে বিবেচনা করা হয় (বা এটি "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