JavaRush /جاوا بلاگ /Random-SD /جاوا انٽيجر ڪلاس گائيڊ

جاوا انٽيجر ڪلاس گائيڊ

گروپ ۾ شايع ٿيل
هن آرٽيڪل ۾ اسين انٽيجر ڪلاس بابت ڳالهائينداسين. اچو ته انهن سوالن تي غور ڪريون:
  • wrapper طبقن ڇا آهن؛
  • آٽو پيڪنگ/پريميٽوز جي انپيڪنگ؛
  • Integer طبقي جو آپريشن، ان جا طريقا ۽ مستقل.
جاوا انٽيجر ڪلاس ٽيوٽوريل - 1

ريپر طبقن جا ابتدائي قسم

جئين توهان ڄاڻو ٿا، جاوا مختلف قسم جا ڊيٽا آهن، جن کي ٻن بلاڪن ۾ ورهائي سگهجي ٿو:
  • ابتدائي
  • حوالو.
جاوا ۾ ڪيترائي پرائمري ڊيٽا جا قسم آھن:
  • انٽيجرز - بائيٽ، ننڍو، انٽ، ڊگهو؛
  • سچل پوائنٽ نمبر (حقيقي) - فلوٽ، ڊبل؛
  • منطقي ڊيٽا جو قسم - boolean؛
  • ڪردار ڊيٽا جو قسم - char.
هر پرائمري ڊيٽا جي قسم جو پنهنجو لفافي طبقو آهي. ھڪڙو حوالو ڊيٽا جو قسم جيڪو پنھنجي ابتدائي ننڍي ڀاء کي جاوا اعتراض ۾ لپي ٿو. ھيٺ ڏنل آھن پرائمري ڊيٽا جا قسم ۽ انھن سان لاڳاپيل ريپر ڪلاس:
ابتدائي قسم ڪپڙا ڪلاس
بائيٽ بائيٽ
مختصر ننڍو
int عدد
ڊگهو ڊگھو
فلوٽ فلوٽ
ٻيڻو ٻيڻو
بولين بوليان
چار ڪردار
عملي لحاظ کان، قديم ۽ انهن جي لپيٽڻ واري طبقن ۾ تمام گهڻو عام آهي. اڪثر آپريشن هڪجهڙائي سان ڪيا ويندا آهن. بهرحال، لفافي طبقن ۾ ڪيتريون ئي خاصيتون هونديون آهن جيڪي پرائمري جي خاصيت نه هونديون آهن. پهريون، ڪلاس آهن: جڏهن لفافي طبقن سان ڪم ڪري رهيا آهيون، اسان شين سان ڪم ڪندا آهيون. ٻيو (هر شيءِ جيڪا پوئين نقطي کان هيٺ اچي ٿي)، اهي شيون خالي ٿي سگهن ٿيون. ٽيون، ريپر ڪلاس ڪيترن ئي مستقل ۽ طريقا مهيا ڪن ٿا جيڪي هڪ خاص ڊيٽا جي قسم سان ڪم ڪرڻ آسان بڻائي ٿو. هن آرٽيڪل ۾ اسان انٽيجر ڪلاس سان ڪم ڪرڻ تي وڌيڪ تفصيل سان نظر ڪنداسين.

انٽيجر _

Integer ڪلاس پرائمري قسم جي int جو هڪ لفافي ڪلاس آهي. هن ڪلاس ۾ int قسم جي ھڪڙي فيلڊ شامل آھي. ريپر ڪلاس جي طور تي، Integer ints سان ڪم ڪرڻ لاءِ مختلف طريقا مهيا ڪري ٿو، ان سان گڏ int کي String ۽ String کي int ۾ تبديل ڪرڻ جا ڪيترائي طريقا. هيٺ اسين ڪلاس سان ڪم ڪرڻ جا مختلف مثال ڏينداسين. اچو ته تخليق سان شروع ڪريون. سڀ کان عام طور تي استعمال ٿيل (۽ استعمال ڪرڻ ۾ آسان) ھيٺ ڏنل تخليق اختيار آھي:
Integer a = 3;
اهو آهي، هن صورت ۾ هڪ Integer variable جي شروعات هڪ int متغير جي شروعات جي برابر آهي. ان کان علاوه، هڪ Integer variable کي int variable جي قدر سان شروع ڪري سگھجي ٿو:
int i = 5;
Integer x = i;
System.out.println(x); // 5
مٿين صورت ۾، خودڪار پيڪنگ واضح طور تي ٿئي ٿي. اسان هيٺ ان بابت وڌيڪ ڳالهائينداسين. مٿي ڏنل فهرستن جي شروعاتي اختيارن کان علاوه، هڪ Integer variable ٻين شين وانگر ٺاهي سگهجي ٿو، تعمير ڪندڙ ۽ نئون لفظ استعمال ڪندي:
Integer x = new Integer(25);
System.out.println(x);
بهرحال، لکڻ ۾ گهڻي ۽ پڙهڻ ۾ گهڻي وقت لڳندي آهي، تنهن ڪري هي اختيار گهٽ ۾ گهٽ عام آهي. توھان سڀ ڪجھ ڪري سگھوٿا Integer variables سان جيڪو توھان ڪري سگھوٿا int variables سان. اهي ٿي سگهن ٿا:
ڦِرڻ

Integer a = 6;
Integer b = 2;
Integer c = a + b;
System.out.println(c); // 8
ڪٽ

Integer a = 6;
Integer b = 2;
Integer c = a - b;
System.out.println(c); // 4
ضرب

Integer a = 6;
Integer b = 2;
Integer c = a * b;
System.out.println(c); // 12
ورهائڻ

Integer a = 6;
Integer b = 2;
Integer c = a / b;
System.out.println(c); // 3
واڌارو

Integer a = 6;
a++;
++a;
System.out.println(a); // 8
گهٽتائي

Integer a = 6;
a--;
--a;
System.out.println(a); // 4
بهرحال، هن سڀني سان، توهان کي محتاط رهڻ جي ضرورت آهي ۽ ياد رکو ته Integer هڪ حوالو ڊيٽا جو قسم آهي، ۽ هن قسم جو هڪ متغير نيل ٿي سگهي ٿو. انهي حالت ۾ (جيڪڏهن متغير null آهي)، اهو بهتر آهي ته رياضياتي عملن کان پاسو ڪيو وڃي (۽ ٻيو ڪو به جنهن ۾ null سٺو نه آهي). هتي هڪ مثال آهي:
Integer a = null;
Integer b = a + 1; // Здесь мы упадем с "Exception in thread "main" java.lang.NullPointerException"
System.out.println(b);
اڪثر مقابلي واري عمل کي ساڳئي طريقي سان ڪيو ويندو آهي جيئن پرائمري قسم جي int ۾:
Integer a = 1;
Integer b = 2;

System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a < b);
System.out.println(a <= b);
پيداوار:

false
false
true
true
ٻن Integer variables جي مقابلي ڪرڻ جو آپريشن بيٺو آھي. ۽ هتي نقطو اهو آهي ته Integer هڪ ريفرنس ڊيٽا جو قسم آهي، ۽ ان جا متغير قدرن جي حوالي سان ذخيرو ڪن ٿا، ۽ نه ته اهي قدر پاڻ (آبجڪس). ھن حقيقت جا مظھر ڏسي سگھجي ٿو جڏھن ھيٺ ڏنل ڪوڊ جي ٽڪڙي تي عمل ڪندي:
Integer a = 1;
Integer b = 1;
Integer c = new Integer(1);

System.out.println(a == b); // true
System.out.println(a == c); // false
پهرين برابري جو نتيجو سچو ٿيندو، ۽ ٻيو غلط ٿيندو. ائين ٿئي ٿو ڇاڪاڻ ته پهرين صورت ۾ اسان ٻن متغيرن ("a" ۽ "b") جو مقابلو ڪندا آهيون جيڪي هڪ ئي اعتراض جي حوالي سان ذخيرو ڪن ٿا. ۽ ٻي صورت ۾، اسان ٻن متغيرن جو مقابلو ڪريون ٿا جيڪي ٻن مختلف شين جو حوالو ڏين ٿا (جڏهن متغير "c" ٺاهيندا آهيون اسان هڪ نئون اعتراض ٺاهيو). اچو ته هڪ ٻيو دلچسپ مثال ڏيون:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a == b); // true
System.out.println(x == y); // false
جيئن اسان ڏسي سگهون ٿا، پهرين مقابلي جو نتيجو صحيح آهي، ۽ ٻيو نتيجو غلط آهي. اهو سڀ ڪجهه caching جي باري ۾ آهي. -128 کان 127 تائين جي رينج ۾ سڀ انٽيگرز شامل آهن (اهي قيمتون ترتيب ڏئي سگهجن ٿيون) ڪيش ٿيل آهن. تنهن ڪري جڏهن اسان هڪ نئون ويريبل ٺاهيندا آهيون ۽ ان کي -128 ۽ 127 جي وچ ۾ انٽيجر ويليو تفويض ڪندا آهيون، اسان هڪ نئون اعتراض نه ٺاهي رهيا آهيون، بلڪه ڪيش ۾ اڳ ۾ ئي ٺاهيل اعتراض جو حوالو متغير کي تفويض ڪري رهيا آهيون. هاڻي، هن حقيقت کي ڄاڻڻ، مٿي ڏنل مثال ايترو صوفياتي نه ٿو لڳي. متغير a ۽ b هڪ ئي اعتراض ڏانهن اشارو ڪن ٿا - ڪيش مان هڪ اعتراض. ۽ متغيرن جي شروعات دوران x ۽ y، اسان هر دفعي هڪ نئون اعتراض ٺاهيو، ۽ اهي متغير مختلف شين جا حوالا محفوظ ڪيا. ۽ جيئن توهان ڄاڻو ٿا، == آپريٽر متغيرن جي قدرن جو مقابلو ڪري ٿو، ۽ حوالن جي قيمتن جا حوالا آهن. ٻن Integer variables جي وچ ۾ برابري کي درست طور تي جانچڻ لاءِ، توھان کي استعمال ڪرڻ گھرجي (ڪڏھن بہ ان کي ڪيترو نه ٿورڙو لڳي) برابري وارو طريقو. اچو ته مٿي ڏنل مثال کي ٻيهر لکون:
Integer a = 1;
Integer b = 1;

Integer x = 2020;
Integer y = 2020;

System.out.println(a.equals(b)); // true
System.out.println(x.equals(y)); // true

خودڪار پيڪنگ ۽ انٽيگر کي انپيڪ ڪرڻ

خودڪار پيڪنگ ۽ unpacking ڇا آهي؟ جڏهن نئين Integer variables ٺاهي، اسان هيٺ ڏنل تعمير استعمال ڪيو:
Integer a = 2020;
هن طريقي سان اسان نئين ڪي آپريٽر استعمال ڪرڻ کان سواءِ هڪ نئون اعتراض ٺاهيو. اهو ممڪن آهي آٽو پيڪنگ ميڪانيزم جي مهرباني جو پرائمري قسم int. ريورس طريقيڪار تڏهن ٿئي ٿو جڏهن هڪ انٽيگر ريفرنس متغير جي قيمت کي هڪ پرائمري int متغير تفويض ڪيو وڃي:
Integer a = 2020;
int x = a;
انهي صورت ۾، اسان لڳي ٿو ته هڪ حوالو مقرر ڪيو آهي (يعني، هڪ اعتراض جو حوالو متغير جي قيمت آهي "a") هڪ پرائمري متغير ڏانهن. پر حقيقت ۾، آٽو-پيڪنگ ميڪانيزم جي مهرباني، 2020 جي قيمت "x" متغير ڏانهن لکيو ويو. آٽو پيڪنگ / ان پيڪنگ جاوا ۾ هڪ تمام عام رجحان آهي. گهڻو ڪري اهو پاڻ ئي ٿئي ٿو، ڪڏهن ڪڏهن پروگرامر جي ڄاڻ کان سواءِ. پر توهان اڃا تائين هن رجحان بابت ڄاڻڻ جي ضرورت آهي. اسان وٽ هن موضوع تي هڪ دلچسپ مضمون آهي Javarush .

Integer class constants

Integer ڪلاس مختلف ثابتيون ۽ انٽيجرز سان ڪم ڪرڻ جا طريقا مهيا ڪري ٿو. هن حصي ۾ اسان انهن مان ڪجهه کي عملي طور تي وڌيڪ تفصيل سان غور ڪنداسين. اچو ته مستقل سان شروع ڪريون. هيٺ ڏنل جدول سڀني ڪلاس جي استحڪام کي ڏيکاري ٿو:
ڪوسٽانٽا وصف
SIZE ٻن عددي نمبر سسٽم ۾ بٽس جو تعداد int قسم جي قبضي ۾ آهي
BYTES ٻن عددي نمبر سسٽم ۾ بائيٽ جو تعداد int قسم تي قبضو ڪيو ويو آهي
MAX_VALUE وڌ ۾ وڌ قدر جيڪا هڪ int قسم رکي سگهي ٿي
MIN_VALUE گھٽ ۾ گھٽ قيمت جيڪا int قسم رکي سگھي ٿي
ٽائيپ قسم int مان قسم جي ھڪڙي شئي کي واپس ڏئي ٿو Class
اچو ته ھيٺ ڏنل ڪوڊ کي ھلائي انھن مڙني مستقلن جي قدرن کي ڏسو.
public static void main(String[] args) {
        System.out.println(Integer.SIZE);
        System.out.println(Integer.BYTES);
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.TYPE);
}
نتيجي طور، اسان هيٺ ڏنل پيداوار حاصل ڪندا آهيون:

32
4
2147483647
-2147483648
int

انٽيجر ڪلاس جا طريقا

هاڻي اچو ته انٽيجر ڪلاس جي سڀ کان وڌيڪ استعمال ٿيل طريقن تي هڪ تڪڙو نظر وجهون. تنهن ڪري، "مٿين" وارا آهن طريقن سان هڪ نمبر کي اسٽرنگ مان تبديل ڪرڻ، يا هڪ نمبر مان اسٽرنگ کي تبديل ڪرڻ لاء. اچو ته شروع ڪريون هڪ تار کي نمبر ۾ تبديل ڪرڻ سان. parseInt طريقو انهن مقصدن لاء استعمال ڪيو ويندو آهي ، دستخط هيٺ ڏنل آهي:
  • 
    static int parseInt(String s)
اهو طريقو String کي int ۾ تبديل ڪري ٿو. اچو ته ڏيکاريون ته هي طريقو ڪيئن ڪم ڪري ٿو:
int i = Integer.parseInt("10");
System.out.println(i); // 10
جيڪڏهن تبديلي ممڪن نه آهي- مثال طور، اسان هڪ لفظ parseInt طريقي سان گذريو آهي- هڪ NumberFormatException اڇلايو ويندو. parseInt(String s) طريقو هڪ اوور لوڊ ٿيل ڀاءُ آهي:
  • 
    static int parseInt(String s, int radix)
اهو طريقو پيٽرولر s کي int ۾ تبديل ڪري ٿو. ريڊڪس پيراميٽر اهو ظاهر ڪري ٿو ته ڪهڙي نمبر سسٽم ۾ s ۾ نمبر اصل ۾ لکيو ويو هو، جنهن کي int ۾ تبديل ڪيو وڃي. هيٺيان مثال:
System.out.println(Integer.parseInt("0011", 2)); // 3
System.out.println(Integer.parseInt("10", 8));   // 8
System.out.println(Integer.parseInt("F", 16));   // 15
parseInt طريقا هڪ ابتدائي ڊيٽا جي قسم int کي واپس ڪري ٿو. انهن طريقن جو هڪ اينالاگ آهي - قدر جو طريقو . هن طريقي جي ڪجهه تبديلين کي صرف اندروني طور تي parseInt سڏين ٿا. parseInt کان فرق اهو آهي ته valueOf جو نتيجو هڪ Integer هوندو، هڪ int نه. اچو ته هن طريقي جي سڀني اختيارن تي غور ڪيو ۽ هڪ مثال اهو ڪيئن ڪم ڪري ٿو:
  • static Integer valueOf(int i) - ھڪڙو انٽيجر موٽائي ٿو جنھن جي قيمت i آھي؛
  • static Integer valueOf(String s) - parseInt(String s) سان ملندڙ جلندڙ، پر نتيجو ٿيندو Integer؛
  • static Integer valueOf(String s, int radix) - parseInt (String s, int radix) سان ملندڙ جلندڙ، پر نتيجو انٽيجر ٿيندو.
مثال:
int a = 5;
Integer x = Integer.valueOf(a);
Integer y = Integer.valueOf("20");
Integer z = Integer.valueOf("20", 8);

System.out.println(x); // 5
System.out.println(y); // 20
System.out.println(z); // 16
اسان انهن طريقن تي غور ڪيو جيڪي توهان کي String کي int/Integer ۾ تبديل ڪرڻ جي اجازت ڏين ٿا. ريورس طريقيڪار کي استعمال ڪندي حاصل ڪيو ويندو آهي toString طريقن . توهان ڪنهن به Integer اعتراض تي toString طريقي کي ڪال ڪري سگهو ٿا ۽ ان جي اسٽرنگ نمائندگي حاصل ڪري سگهو ٿا:
Integer x = 5;
System.out.println(x.toString()); // 5
بهرحال، حقيقت اها آهي ته toString طريقو اڪثر ڪري سڏيو ويندو آهي واضح طور تي شين تي (مثال طور، جڏهن هڪ اعتراض کي ڇپائي لاء ڪنسول ڏانهن موڪلڻ لاء)، اهو طريقو گهٽ ۾ گهٽ ڊولپرز طرفان واضح طور تي استعمال ڪيو ويندو آهي. String لاءِ ھڪڙو جامد طريقو پڻ آھي، جيڪو ھڪڙو int پيٽرولر وٺي ٿو ۽ ان کي ھڪڙي اسٽرنگ نمائندگي ۾ تبديل ڪري ٿو. مثال طور:
System.out.println(Integer.toString(5)); // 5
بهرحال، غير جامد toString طريقي وانگر، جامد طريقو استعمال ڪرڻ واضح طور تي نادر آهي. وڌيڪ دلچسپ آهي جامد طريقو String ڏانهن، جيڪو 2 انٽيجر پيٽرولر وٺندو آهي:
  • static String toString(int i، int radix) - i کي ريڊيڪس نمبر سسٽم ۾ اسٽرنگ جي نمائندگي ۾ تبديل ڪندو.
مثال:
System.out.println(Integer.toString(5, 2)); // 101
انٽيجر ڪلاس ۾ وڌ ۾ وڌ / گھٽ ۾ گھٽ ٻن نمبرن کي ڳولڻ لاءِ ڪجھ طريقا آھن:
  • static int max (int a، int b) منظور ٿيل متغيرن جي وچ ۾ سڀ کان وڏو قدر واپس ڪندو؛
  • static int min (int a، int b) پاس ڪيل متغيرن جي وچ ۾ سڀ کان ننڍڙو قدر واپس ڪندو.
مثال:
int x = 4;
int y = 40;

System.out.println(Integer.max(x,y)); // 40
System.out.println(Integer.min(x,y)); // 4

نتيجو

هن آرٽيڪل ۾ اسان انٽيجر ڪلاس کي ڏٺو. اسان ان بابت ڳالهايو ته هي ڪهڙي قسم جو طبقو آهي ۽ ڪهڙو لفافي طبقو آهي. اسان ڪلاس کي عملي نقطي نظر کان ڏٺو. اسان رياضي جي عملن جا مثال ڏٺا، جن ۾ مقابلي جي عملن سميت. اسان ٻن Integer متغيرن جي مقابلي ڪرڻ جي پيچيدگين تي هڪ نظر ورتو، ۽ ڪيش ڪيل شين جي تصور کي جانچيو. اسان پڻ آٽو پيڪنگ جي رجحان جو ذڪر ڪيو / ابتدائي ڊيٽا جي قسمن جي پيڪنگنگ. ان کان علاوه، اسان انٽيجر ڪلاس جي ڪجھ طريقن کي ڏسڻ لاء منظم ڪيو، ۽ گڏوگڏ ڪجھ مستقل. انهن نمبرن کي هڪ نمبر سسٽم مان ٻئي نمبر ۾ تبديل ڪرڻ جا مثال ڏنا.

گهر جو ڪم

  1. پڙهو ته انٽيجر ڪلاس جا ٻيا ڪهڙا طريقا آهن (توهان انهن کي سرڪاري دستاويزن سان ويب سائيٽ تي پڙهي سگهو ٿا )، تبصرن ۾ لکو ته توهان ڪهڙن طريقن جو مطالعو ڪيو آهي (مضمون ۾ ڏنل مضمونن کان سواءِ) توهان جي راءِ ۾ سڀ کان وڌيڪ ڪارائتو آهي ( توهان جي طرفان اڪثر استعمال ڪيو ويندو). ۽ پنهنجي راءِ جا دليل پڻ ڏيو.

    PS هتي ڪي به صحيح جواب نه آهن، پر هي سرگرمي توهان کي ڪلاس کي بهتر نموني پڙهڻ جي اجازت ڏيندو.

  2. مواد کي مضبوط ڪرڻ لاء هڪ ننڍڙو سادو مسئلو حل ڪريو.

    اسان وٽ ٻه نمبر آهن:

    1100001001 - بائنري نمبر سسٽم ۾
    33332 - ڪوئنري نمبر سسٽم ۾

    اهو ضروري آهي ته، صرف Integer طبقي جي طريقن کي استعمال ڪندي، ٻن ڏنل انگن جي وچ ۾ وڌ ۾ وڌ اندازو لڳائڻ، ۽ پوء ٽينري نمبر سسٽم ۾ وڌ ۾ وڌ ۽ گھٽ ۾ گھٽ قدر جي وچ ۾ فرق ڏيکاري.

  3. وڌ ۾ وڌ ممڪن انٽيجر جي قيمت کي آڪٽل نمبر سسٽم ۾ تبديل ڪريو ۽ نتيجي ۾ انگن جو تعداد ڏيکاريو (نمبر کي پروگرام جي لحاظ سان ڳڻيو).

تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION