CodeGym /جاوا بلاگ /Random-UR /جاوا میں آٹو باکسنگ اور ان باکسنگ
John Squirrels
سطح
San Francisco

جاوا میں آٹو باکسنگ اور ان باکسنگ

گروپ میں شائع ہوا۔
جاوا میں، قدیم اور ان کے ریپرز کی ایک خصوصیت آٹو باکسنگ / ان باکسنگ ہے۔ آئیے اس تصور میں کھودتے ہیں۔ جیسا کہ ہم پہلے ہی سیکھ چکے ہیں، جاوا ایک آبجیکٹ پر مبنی زبان ہے۔ اس کا مطلب ہے کہ جاوا میں لکھے گئے تمام پروگرام آبجیکٹ سے بنے ہیں۔ قدیم چیزیں اشیاء نہیں ہیں۔ لیکن اس کے باوجود، ایک ریپر متغیر کو ایک قدیم قدر تفویض کی جا سکتی ہے۔ اس عمل کو آٹو باکسنگ کہا جاتا ہے۔ اسی طرح، ایک قدیم متغیر کو ایک ریپر آبجیکٹ تفویض کیا جا سکتا ہے۔ اس عمل کو ان باکسنگ کہتے ہیں۔ مثال کے طور پر:
public class Main {
   public static void main(String[] args) {
       int x = 7;
       Integer y = 111;
       x = y; // Unboxing
       y = x * 123; // Autoboxing
   }
}
لائن 5 میں، ہم y کو تفویض کرتے ہیں، جو کہ ایک عدد عدد چیز ہے، ابتدائی x کو ۔ جیسا کہ آپ دیکھ سکتے ہیں، ہمیں کوئی اضافی قدم اٹھانے کی ضرورت نہیں ہے: مرتب کرنے والا جانتا ہے کہ int اور Integer ، بنیادی طور پر، ایک ہی چیز ہیں۔ یہ ان باکسنگ ہے۔ لائن 6 پر آٹو باکسنگ کے ساتھ بھی کچھ ایسا ہی ہو رہا ہے: قدیم قدر (x * 123) آسانی سے آبجیکٹ y کو تفویض کیا جاتا ہے ۔ یہ آٹو باکسنگ کی ایک مثال ہے۔ اسی لیے اس اصطلاح میں "آٹو" کا لفظ شامل ہے: کیونکہ آپ کو پرائمیٹوز کو ان کے متعلقہ ریپر اشیاء (اور اس کے برعکس) تفویض کرنے کے لیے کچھ خاص کرنے کی ضرورت نہیں ہے۔ یہ سب خود بخود ہوتا ہے۔ آسان، ہہ؟ :) ہم طریقوں کے ساتھ کام کرتے وقت آٹو باکسنگ / ان باکسنگ کی سہولت کی ایک اور مثال دیکھتے ہیں۔ اس کی وجہ یہ ہے کہ طریقہ کار کے دلائل بھی آٹو باکسڈ اور ان باکس شدہ ہیں۔ مثال کے طور پر، اگر کوئی طریقہ دو انٹیجر اشیاء کو بطور ان پٹ لیتا ہے، تو ہم اس کی بجائے عام int s کو آسانی سے پاس کر سکتے ہیں!
public class Main {
   public static void main(String[] args) {

       printNumber(7);// A standard int, not even an int variable
   }

   public static void printNumber(Integer i) {
       System.out.println("You entered the number " + i);
   }
}
آؤٹ پٹ:
You entered the number 7
یہ دوسری سمت میں بھی کام کرتا ہے:
public class Main {
   public static void main(String[] args) {

       printNumber(new Integer(632));
   }

   public static void printNumber(int i) {
       System.out.println("You entered the number " + i);
   }
}
ایک اہم نکتہ جو آپ کو یاد رکھنے کی ضرورت ہے وہ یہ ہے: آٹو باکسنگ اور ان باکسنگ صفوں کے لیے کام نہیں کرتے ہیں!
public class Main {
   public static void main(String[] args) {

       int[] i = {1,2,3,4,5};

       printArray(i);// Error, this won't compile!
   }

   public static void printArray(Integer[] arr) {
       System.out.println(Arrays.toString(arr));
   }
}
قدیم چیزوں کی ایک صف کو کسی ایسے طریقہ پر منتقل کرنے کی کوشش کرنے سے جو اشیاء کی ایک صف لیتا ہے اس کے نتیجے میں تالیف کی غلطی ہوگی۔ آخر میں، آئیے مختصراً پرائمیٹوز اور ریپرز کا ایک بار پھر موازنہ کریں۔

قدیم:

  • کارکردگی کے فوائد ہیں۔
ریپرز:
  • ہمیں اجازت دیں کہ "ہر چیز ایک چیز ہے" کے اصول کی خلاف ورزی نہ کریں، جس کا مطلب ہے کہ اعداد، حروف، اور بولین اقدار اس تصور کی خلاف ورزی نہیں کرتے ہیں۔
  • آسان طریقے اور فیلڈز فراہم کرکے ان اقدار کے ساتھ کام کرنے کے امکانات کو وسعت دیں۔
  • ضروری ہیں جب کوئی طریقہ صرف اشیاء کے ساتھ کام کرتا ہے۔
جو کچھ آپ نے سیکھا ہے اس کو تقویت دینے کے لیے، ہمارا مشورہ ہے کہ آپ ہمارے جاوا کورس سے ایک ویڈیو سبق دیکھیں
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION