CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ آٽو باڪسنگ ۽ انباڪسنگ
John Squirrels
سطح
San Francisco

جاوا ۾ آٽو باڪسنگ ۽ انباڪسنگ

گروپ ۾ شايع ٿيل
جاوا ۾، پرائمري ۽ انهن جي لفافي جي هڪ خاصيت آٽو باڪسنگ / انباڪسنگ آهي. اچو ته هن تصور ۾ ڳولهيون. جيئن ته اسان اڳ ۾ ئي سکيو آهي، جاوا هڪ اعتراض تي مبني ٻولي آهي. ان جو مطلب آهي ته جاوا ۾ لکيل سڀئي پروگرام شيون ٺهيل آهن. Primitives شيون نه آهن. پر ان جي باوجود، هڪ لفافي متغير هڪ ابتدائي قدر مقرر ڪري سگهجي ٿو. اهو عمل autoboxing سڏيو ويندو آهي. اهڙي طرح، هڪ پرائمري متغير کي هڪ لفافي اعتراض مقرر ڪري سگهجي ٿو. اهو عمل انباڪسنگ سڏيو ويندو آهي. مثال طور:
public class Main {
   public static void main(String[] args) {
       int x = 7;
       Integer y = 111;
       x = y; // Unboxing
       y = x * 123; // Autoboxing
   }
}
لڪير 5 ۾، اسان y تفويض ڪريون ٿا، جيڪو هڪ Integer اعتراض آهي، پرائمري x ڏانهن . جئين توهان ڏسي سگهو ٿا، اسان کي ڪنهن به اضافي قدم کڻڻ جي ضرورت ناهي: مرتب ڪندڙ ڄاڻي ٿو ته int ۽ Integer آهن، بنيادي طور تي، ساڳي شيء. اهو unboxing آهي. ڪجھ ساڳيو ئي ٿي رهيو آهي آٽو باڪسنگ سان لائن 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));
   }
}
primitives جي هڪ صف کي هڪ طريقي سان منتقل ڪرڻ جي ڪوشش ڪندي جيڪا شين جي هڪ صف کي وٺي ٿي، نتيجي ۾ هڪ تاليف جي غلطي ٿيندي. نتيجي ۾، اچو ته مختصر طور تي هڪ ڀيرو وڌيڪ پريميٽوز ۽ ريپرز جو مقابلو ڪريون.

پرائمري:

  • ڪارڪردگي جا فائدا آهن
ڪپڙا:
  • اسان کي اجازت ڏيو ته "هر شي هڪ اعتراض آهي" اصول جي ڀڃڪڙي نه ڪريو، جنهن جو مطلب آهي ته انگ، اکرن، ۽ بولين قدر هن تصور جي ڀڃڪڙي نٿا ڪن
  • آسان طريقن ۽ شعبن کي مهيا ڪندي انهن قدرن سان ڪم ڪرڻ جي امڪانن کي وڌايو
  • ضروري آهن جڏهن هڪ طريقو صرف شين سان ڪم ڪري ٿو
جيڪو توهان سکيو ان کي مضبوط ڪرڻ لاءِ، اسان توهان کي اسان جي جاوا ڪورس مان هڪ وڊيو سبق ڏسڻ جي صلاح ڏيون ٿا
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION