জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন এক ধরণের যেখানে সমান হতে সংজ্ঞা E1 op= E2
দেয় এবং একবার মূল্যায়ন করা হয়E1 = (T) ((E1) op (E2))
T
E1
E1
।
এটি একটি প্রযুক্তিগত উত্তর, তবে আপনি ভাবছেন যে কেন এটি একটি ঘটনা। ঠিক আছে, নীচের প্রোগ্রামটি বিবেচনা করা যাক।
public class PlusEquals {
public static void main(String[] args) {
byte a = 1;
byte b = 2;
a = a + b;
System.out.println(a);
}
}
এই প্রোগ্রামটি কী মুদ্রণ করে?
আপনি 3 অনুমান করেছেন? খুব খারাপ, এই প্রোগ্রামটি সংকলন করবে না। কেন? ওয়েল, এটি তাই ঘটে যে জাভা মধ্যে বাইট যোগ একটি ফেরত সংজ্ঞায়িত করা হয়int
। এটি আমার বিশ্বাস, কারণ জাভা ভার্চুয়াল মেশিনটি বাইটোকোডগুলিতে সংরক্ষণ করার জন্য বাইট অপারেশনগুলি সংজ্ঞায়িত করে না (এর মধ্যে একটি সীমাবদ্ধ সংখ্যা রয়েছে, সর্বোপরি), পরিবর্তে পূর্ণসংখ্যা অপারেশনগুলি কোনও ভাষায় প্রকাশ করা একটি বাস্তবায়ন বিশদ।
তবে যদি a = a + b
এটি কাজ না করে, তার অর্থ হ'ল a += b
এটি কখনই বাইটের জন্য কাজ করে না যদি এটি E1 += E2
সংজ্ঞায়িত করা হয় E1 = E1 + E2
। পূর্ববর্তী উদাহরণটি যেমন দেখায়, সত্যই এটি হবে। +=
বাইটস এবং শর্টসগুলির জন্য অপারেটরকে কাজ করার জন্য একটি হ্যাক হিসাবে , সেখানে জড়িত অন্তর্নিহিত কাস্ট রয়েছে। এটি হ্যাকের মতো দুর্দান্ত নয়, তবে জাভা ০.০ কাজের সময়, ফোকাসটি ছিল ভাষাটি শুরু করার সাথে সাথেই শুরু করা। এখন, পিছনের সামঞ্জস্যের কারণে, জাভা 1.0 এ প্রবর্তিত এই হ্যাকটি সরানো যায়নি।