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

جاوا میں ریپر کلاسز

گروپ میں شائع ہوا۔
ہائے! آپ پہلے سے ہی قدیم اقسام سے اچھی طرح واقف ہیں، اور آپ نے ان کے ساتھ کافی کام کیا ہے۔ پروگرامنگ (اور خاص طور پر جاوا) میں، پرائمیٹوز کے بہت سے فوائد ہیں: وہ بہت کم میموری استعمال کرتے ہیں (اور اس طرح پروگرام کو زیادہ موثر بناتے ہیں) اور ان کی قدروں کی واضح حد تک وضاحت کی گئی ہے۔ تاہم، جاوا سیکھنے کے دوران، ہم نے پہلے ہی اکثر منتر کو دہرایا ہے "جاوا میں ہر چیز ایک چیز ہے"۔ لیکن قدیم ان الفاظ سے براہ راست متصادم ہیں۔ وہ اشیاء نہیں ہیں۔ تو کیا ہمارا "ہر چیز ایک چیز ہے" کا اصول غلط ہے؟ اصل میں، یہ نہیں ہے. جاوا میں، ہر قدیم قسم کا جڑواں بھائی، ایک ریپر کلاس ہوتا ہے۔

ریپر کلاس کیا ہے؟

ایک ریپر ایک خاص طبقہ ہے جو اندرونی طور پر قدیم کو ذخیرہ کرتا ہے۔ لیکن چونکہ یہ ایک کلاس ہے، آپ اس کی مثالیں بنا سکتے ہیں۔ وہ قدیم اقدار کو اندرونی طور پر ذخیرہ کرتے ہیں، لیکن پھر بھی حقیقی اشیاء ہیں۔ ریپر کلاس کے نام ان کے متعلقہ پرائمیٹوز کے ناموں سے بہت ملتے جلتے ہیں (یا بالکل اسی طرح)۔ لہذا، وہ یاد کرنے کے لئے آسان ہیں.
قدیم ڈیٹا کی اقسام کے لیے ریپر کلاسز
قدیم ڈیٹا کی اقسام ریپر کلاسز
int عدد
مختصر مختصر
طویل لمبی
بائٹ بائٹ
تیرنا تیرنا
دگنا دگنا
چار کردار
بولین بولین
ریپر آبجیکٹ اسی طرح بنائے گئے ہیں جیسے کسی دوسری چیز:
public static void main(String[] args) {

   Integer i = new Integer(682);

   Double d = new Double(2.33);

   Boolean b = new Boolean(false);
}
ریپر کلاسز ہمیں قدیم اقسام کی خامیوں کو کم کرنے دیتی ہیں۔ سب سے واضح یہ ہے کہ قدیم لوگوں کے پاس طریقے نہیں ہوتے ہیں۔ مثال کے طور پر، ان کے پاس toString() طریقہ نہیں ہے ، لہذا آپ مثال کے طور پر، int کو String میں تبدیل نہیں کر سکتے ۔ لیکن انٹیجر ریپر کلاس اس کو آسان بناتی ہے۔
public static void main(String[] args) {

   Integer i = new Integer(432);

   String s = i.toString();
}
تاہم، دوسری سمت میں تبدیل کرنا مشکل ہو سکتا ہے۔ ہم کہتے ہیں کہ ہمارے پاس ایک String ہے ، جسے ہم یقینی طور پر جانتے ہیں کہ اس میں ایک نمبر ہے۔ قطع نظر، اسٹرنگ سے نمبر نکالنے اور اسے نمبر میں تبدیل کرنے کے لیے پرائمیٹو انٹ استعمال کرنے کا کوئی مقامی طریقہ نہیں ہے۔ لیکن، ہم ریپر کلاسز کے ساتھ کر سکتے ہیں۔
public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
آؤٹ پٹ:
1166628
ہم نے کامیابی کے ساتھ سٹرنگ سے ایک نمبر نکالا اور اسے انٹیجر حوالہ متغیر i کو تفویض کیا ۔ ویسے حوالہ جات کے حوالے سے۔ آپ پہلے ہی جانتے ہیں کہ دلائل مختلف طریقوں سے طریقوں کو منتقل کیے جاتے ہیں: قدر کے لحاظ سے قدیم، اور اشیاء کے حوالے سے۔ آپ اپنے طریقے بناتے وقت اس علم کا استعمال کر سکتے ہیں: مثال کے طور پر، اگر آپ کا طریقہ فریکشنل نمبرز استعمال کرتا ہے لیکن آپ کو حوالہ سے گزرنے کے لیے منطق کی ضرورت ہے، تو آپ ڈبل / فلوٹ کے بجائے اس طریقہ میں Double / Float دلائل پاس کر سکتے ہیں ۔ ریپر کلاسز کے طریقوں کے علاوہ، ان کے جامد فیلڈز بھی بہت آسان ہو سکتے ہیں۔ مثال کے طور پر، تصور کریں کہ آپ کے پاس درج ذیل کام ہے: زیادہ سے زیادہ ممکنہ int ویلیو دکھائیں، اس کے بعد کم از کم ممکنہ قدر دکھائیں۔ یہ مسئلہ کافی بنیادی لگتا ہے۔ لیکن گوگل کے بغیر، یہ ممکن نہیں ہے کہ آپ یہ کر سکیں۔ لیکن ریپرز آپ کو اس طرح کے "غیر قانونی کاموں" کو آسانی سے سنبھالنے کی اجازت دیتے ہیں:
public class Main {
   public static void main(String[] args) {

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
یہ فیلڈز آپ کو زیادہ سنجیدہ کاموں کو پورا کرنے سے مشغول ہونے سے روکتی ہیں۔ اس حقیقت کا ذکر نہ کرنا کہ 2147483647 (جو کہ MAX_VALUE کی قدر ہوتی ہے) میں ٹائپ کرنا کوئی معمولی کارنامہ نہیں ہے! :) مزید برآں، پچھلے سبق میں، ہم نے نشاندہی کی تھی کہ ریپر اشیاء ناقابل تغیر ہیں۔
public static void main(String[] args) {

   Integer a = new Integer(0);
   Integer b = new Integer(0);

   b = a;
   a = 1;
   System.out.println(b);
}
آؤٹ پٹ:
0
آبجیکٹ کی حالت جس کی طرف اصل میں a کی طرف اشارہ کیا گیا ہے تبدیل نہیں ہوا (کیونکہ b کی قدر بھی بدل گئی ہوگی)۔ جیسا کہ String s کے ساتھ، ریپر آبجیکٹ کی حالت کو تبدیل کرنے کے بجائے، میموری میں ایک بالکل نیا آبجیکٹ بنایا جاتا ہے۔ تو، جاوا کے تخلیق کاروں نے آخر کار زبان میں قدیم اقسام کو چھوڑنے کا فیصلہ کیوں کیا؟ چونکہ ہر چیز کو ایک آبجیکٹ ہونا چاہئے، اور ہمارے پاس ریپر کلاسز ہیں جو ہر اس چیز کا اظہار کر سکتی ہیں جس کا پرائمیٹوز اظہار کرتے ہیں، کیوں نہ صرف ریپرز کو زبان میں رکھیں اور پرائمیٹو کو ہٹا دیں؟ جواب آسان ہے: کارکردگی۔ قدیم اقسام کو پرائمیٹو کہا جاتا ہے کیونکہ ان میں اشیاء کی بہت سی "ہیوی ویٹ" خصوصیات کی کمی ہوتی ہے۔ جی ہاں، اشیاء کے بہت سے آسان طریقے ہیں، لیکن آپ کو ہمیشہ ان کی ضرورت نہیں ہوتی۔ کبھی کبھی، آپ کو صرف نمبر 33، یا 2.62، یا سچ / غلط کی ضرورت ہوتی ہے ۔ ایسے حالات میں جہاں اشیاء کے فوائد سے کوئی فرق نہیں پڑتا ہے اور پروگرام کے کام کرنے کے لیے ان کی ضرورت نہیں ہوتی ہے، پرائمیٹوز اس کام کے لیے کہیں زیادہ موزوں ہیں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION