- wrapper طبقن ڇا آهن؛
- آٽو پيڪنگ/پريميٽوز جي انپيڪنگ؛
- Integer طبقي جو آپريشن، ان جا طريقا ۽ مستقل.
ريپر طبقن جا ابتدائي قسم
جئين توهان ڄاڻو ٿا، جاوا مختلف قسم جا ڊيٽا آهن، جن کي ٻن بلاڪن ۾ ورهائي سگهجي ٿو:- ابتدائي
- حوالو.
- انٽيجرز - بائيٽ، ننڍو، انٽ، ڊگهو؛
- سچل پوائنٽ نمبر (حقيقي) - فلوٽ، ڊبل؛
- منطقي ڊيٽا جو قسم - 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 = 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)
int i = Integer.parseInt("10");
System.out.println(i); // 10
جيڪڏهن تبديلي ممڪن نه آهي- مثال طور، اسان هڪ لفظ parseInt طريقي سان گذريو آهي- هڪ NumberFormatException اڇلايو ويندو. parseInt(String s) طريقو هڪ اوور لوڊ ٿيل ڀاءُ آهي:
-
static int parseInt(String s, int radix)
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 متغيرن جي مقابلي ڪرڻ جي پيچيدگين تي هڪ نظر ورتو، ۽ ڪيش ڪيل شين جي تصور کي جانچيو. اسان پڻ آٽو پيڪنگ جي رجحان جو ذڪر ڪيو / ابتدائي ڊيٽا جي قسمن جي پيڪنگنگ. ان کان علاوه، اسان انٽيجر ڪلاس جي ڪجھ طريقن کي ڏسڻ لاء منظم ڪيو، ۽ گڏوگڏ ڪجھ مستقل. انهن نمبرن کي هڪ نمبر سسٽم مان ٻئي نمبر ۾ تبديل ڪرڻ جا مثال ڏنا.گهر جو ڪم
-
پڙهو ته انٽيجر ڪلاس جا ٻيا ڪهڙا طريقا آهن (توهان انهن کي سرڪاري دستاويزن سان ويب سائيٽ تي پڙهي سگهو ٿا )، تبصرن ۾ لکو ته توهان ڪهڙن طريقن جو مطالعو ڪيو آهي (مضمون ۾ ڏنل مضمونن کان سواءِ) توهان جي راءِ ۾ سڀ کان وڌيڪ ڪارائتو آهي ( توهان جي طرفان اڪثر استعمال ڪيو ويندو). ۽ پنهنجي راءِ جا دليل پڻ ڏيو.
PS هتي ڪي به صحيح جواب نه آهن، پر هي سرگرمي توهان کي ڪلاس کي بهتر نموني پڙهڻ جي اجازت ڏيندو.
-
مواد کي مضبوط ڪرڻ لاء هڪ ننڍڙو سادو مسئلو حل ڪريو.
اسان وٽ ٻه نمبر آهن:
1100001001 - بائنري نمبر سسٽم ۾
33332 - ڪوئنري نمبر سسٽم ۾اهو ضروري آهي ته، صرف Integer طبقي جي طريقن کي استعمال ڪندي، ٻن ڏنل انگن جي وچ ۾ وڌ ۾ وڌ اندازو لڳائڻ، ۽ پوء ٽينري نمبر سسٽم ۾ وڌ ۾ وڌ ۽ گھٽ ۾ گھٽ قدر جي وچ ۾ فرق ڏيکاري.
-
وڌ ۾ وڌ ممڪن انٽيجر جي قيمت کي آڪٽل نمبر سسٽم ۾ تبديل ڪريو ۽ نتيجي ۾ انگن جو تعداد ڏيکاريو (نمبر کي پروگرام جي لحاظ سان ڳڻيو).
GO TO FULL VERSION