JavaRush /جاوا بلاگ /Random-UR /جاوا انٹیجر کلاس گائیڈ

جاوا انٹیجر کلاس گائیڈ

گروپ میں شائع ہوا۔
اس مضمون میں ہم انٹیجر کلاس کے بارے میں بات کریں گے۔ آئیے ان سوالات پر غور کریں:
  • ریپر کلاسز کیا ہیں؛
  • پرائمیٹوز کی آٹو پیکنگ/ان پیکنگ؛
  • انٹیجر کلاس کا آپریشن، اس کے طریقے اور مستقل۔
جاوا انٹیجر کلاس ٹیوٹوریل - 1

قدیم اقسام کی ریپر کلاسز

جیسا کہ آپ جانتے ہیں، جاوا میں ڈیٹا کی مختلف اقسام ہیں، جنہیں دو بلاکس میں تقسیم کیا جا سکتا ہے۔
  • قدیم
  • حوالہ
جاوا میں ڈیٹا کی کئی اقسام ہیں:
  • انٹیجرز - بائٹ، مختصر، int، طویل؛
  • فلوٹنگ پوائنٹ نمبرز (حقیقی) - فلوٹ، ڈبل؛
  • منطقی ڈیٹا کی قسم - بولین؛
  • کریکٹر ڈیٹا کی قسم - char.
ہر قدیم ڈیٹا کی قسم کی اپنی ریپر کلاس ہوتی ہے۔ ایک حوالہ ڈیٹا کی قسم جو اپنے قدیم چھوٹے بھائی کو جاوا آبجیکٹ میں لپیٹ دیتی ہے۔ ذیل میں ڈیٹا کی ابتدائی اقسام اور ان سے متعلقہ ریپر کلاسز ہیں:
قدیم قسم ریپر کلاس
بائٹ بائٹ
مختصر مختصر
int عدد
طویل لمبی
تیرنا تیرنا
دگنا دگنا
بولین بولین
چار کردار
ایک عملی معنوں میں، قدیم اور ان کے ریپر کلاسز میں بہت کچھ مشترک ہے۔ زیادہ تر آپریشن یکساں طور پر کیے جاتے ہیں۔ تاہم، ریپر کلاسز میں بہت سی خصوصیات ہیں جو قدیم کی خصوصیت نہیں ہیں۔ سب سے پہلے، کلاسز ہیں: ریپر کلاسز کے ساتھ کام کرتے وقت، ہم اشیاء کے ساتھ کام کرتے ہیں۔ دوم (ہر چیز جو پوائنٹ ون کے بعد آتی ہے)، یہ اشیاء کالعدم ہو سکتی ہیں۔ تیسرا، ریپر کلاسز متعدد مستقل اور طریقے مہیا کرتی ہیں جو کسی خاص ڈیٹا کی قسم کے ساتھ کام کرنا آسان بناتی ہیں۔ اس مضمون میں ہم انٹیجر کلاس کے ساتھ کام کرنے پر گہری نظر ڈالیں گے۔

انٹیجر _

انٹیجر کلاس قدیم قسم کے int کی ایک ریپر کلاس ہے۔ اس کلاس میں int قسم کا ایک ہی فیلڈ ہوتا ہے۔ ریپر کلاس کے طور پر، Integer ints کے ساتھ کام کرنے کے مختلف طریقے فراہم کرتا ہے، ساتھ ہی int کو String اور String کو int میں تبدیل کرنے کے کئی طریقے فراہم کرتا ہے۔ ذیل میں ہم کلاس کے ساتھ کام کرنے کی مختلف مثالیں دیکھیں گے۔ آئیے تخلیق کے ساتھ شروع کریں۔ سب سے زیادہ استعمال ہونے والا (اور استعمال میں سب سے آسان) مندرجہ ذیل تخلیق کا اختیار ہے:
Integer a = 3;
یعنی، اس معاملے میں انٹیجر متغیر کی ابتداء ایک int متغیر کی ابتداء کی طرح ہے۔ مزید یہ کہ ایک انٹیجر متغیر کو int متغیر کی قدر کے ساتھ شروع کیا جا سکتا ہے:
int i = 5;
Integer x = i;
System.out.println(x); // 5
مندرجہ بالا معاملے میں، آٹو پیکنگ واضح طور پر ہوتی ہے۔ ہم ذیل میں اس کے بارے میں مزید بات کریں گے۔ اوپر دیے گئے ابتدائی اختیارات کے علاوہ، کنسٹرکٹر اور نئے کلیدی لفظ کا استعمال کرتے ہوئے، دیگر اشیاء کی طرح ایک عدد متغیر بھی بنایا جا سکتا ہے:
Integer x = new Integer(25);
System.out.println(x);
تاہم، لکھنے میں زیادہ اور پڑھنے میں زیادہ وقت لگتا ہے، اس لیے یہ آپشن سب سے کم عام ہے۔ آپ انٹیجر متغیر کے ساتھ وہ سب کچھ کر سکتے ہیں جو آپ int متغیر کے ساتھ کر سکتے ہیں۔ وہ ہو سکتے ہیں:
تہ

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 ایک حوالہ ڈیٹا کی قسم ہے، اور اس کے متغیر اقدار کے حوالہ جات کو محفوظ کرتے ہیں، نہ کہ خود قدروں (آبجیکٹ) کو۔ مندرجہ ذیل کوڈ کے ٹکڑے پر عمل کرتے وقت اس حقیقت کے اظہار کا مشاہدہ کیا جا سکتا ہے:
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
جیسا کہ ہم دیکھ سکتے ہیں، پہلی موازنہ کا نتیجہ درست ہے، اور دوسرے کا نتیجہ غلط ہے۔ یہ سب کیشنگ کے بارے میں ہے۔ -128 سے لے کر 127 تک کی رینج میں تمام انٹیجرز (ان قدروں کو اپنی مرضی کے مطابق بنایا جا سکتا ہے) کیش شدہ ہیں۔ لہذا جب ہم ایک نیا متغیر بناتے ہیں اور اسے -128 اور 127 کے درمیان ایک عددی قدر تفویض کرتے ہیں، تو ہم کوئی نیا آبجیکٹ نہیں بنا رہے ہیں، بلکہ متغیر کو کیشے میں پہلے سے تخلیق شدہ آبجیکٹ کا حوالہ دے رہے ہیں۔ اب اس حقیقت کو جان کر اوپر دی گئی مثال اتنی صوفیانہ نہیں لگتی۔ متغیرات a اور b ایک ہی چیز کا حوالہ دیتے ہیں - کیشے سے ایک آبجیکٹ۔ اور متغیرات x اور y کی ابتداء کے دوران، ہم نے ہر بار ایک نیا آبجیکٹ بنایا، اور یہ متغیر مختلف اشیاء کے حوالہ جات کو محفوظ کرتے ہیں۔ اور جیسا کہ آپ جانتے ہیں، == آپریٹر متغیرات کی قدروں کا موازنہ کرتا ہے، اور حوالہ متغیر کی قدریں حوالہ جات ہیں۔ دو عددی متغیرات کے درمیان برابری کو درست طریقے سے جانچنے کے لیے، آپ کو مساوی طریقہ استعمال کرنا چاہیے (چاہے یہ کتنا ہی معمولی کیوں نہ ہو)۔ آئیے اوپر کی مثال کو دوبارہ لکھتے ہیں:
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

آٹو پیکنگ اور انٹیجر کو کھولنا

آٹو پیکنگ اور پیک کھولنا کیا ہے؟ نئے انٹیجر متغیرات بناتے وقت، ہم نے مندرجہ ذیل تعمیر کا استعمال کیا:
Integer a = 2020;
اس طرح ہم نے نیا کلیدی آپریٹر استعمال کیے بغیر ایک نیا آبجیکٹ بنایا۔ یہ قدیم قسم کے int کے آٹو پیکنگ میکانزم کی بدولت ممکن ہے۔ الٹا طریقہ کار اس وقت ہوتا ہے جب ایک انٹیجر حوالہ متغیر کی قدر کے لیے ایک پرائمیٹو int متغیر کو تفویض کیا جاتا ہے:
Integer a = 2020;
int x = a;
اس صورت میں، ایسا لگتا ہے کہ ہم نے ایک حوالہ تفویض کیا ہے (یعنی، کسی شے کا حوالہ متغیر "a" کی قدر ہے) ایک قدیم متغیر کو۔ لیکن درحقیقت، آٹو پیکنگ کے طریقہ کار کی بدولت، ویلیو 2020 کو "x" متغیر پر لکھا گیا تھا۔ آٹو پیکنگ/ان پیکنگ جاوا میں ایک بہت عام رجحان ہے۔ اکثر یہ خود ہی ہوتا ہے، کبھی کبھی پروگرامر کے علم کے بغیر بھی۔ لیکن آپ کو اب بھی اس رجحان کے بارے میں جاننے کی ضرورت ہے۔ Javarush پر اس موضوع پر ہمارے پاس ایک دلچسپ مضمون ہے ۔

انٹیجر کلاس مستقل

انٹیجر کلاس انٹیجرز کے ساتھ کام کرنے کے لیے مختلف مستقل اور طریقے فراہم کرتی ہے۔ اس سیکشن میں ہم عملی طور پر ان میں سے کچھ کو قریب سے دیکھیں گے۔ آئیے مستقل کے ساتھ شروع کریں۔ نیچے دی گئی جدول کلاس کے تمام مستقلات کو ظاہر کرتی ہے:
کوسٹانٹا تفصیل
سائز int قسم کے زیر قبضہ دو ہندسوں کے نمبر سسٹم میں بٹس کی تعداد
BYTES int قسم کے زیر قبضہ دو ہندسوں کے نمبر سسٹم میں بائٹس کی تعداد
MAX_VALUE زیادہ سے زیادہ قدر جو ایک int قسم رکھ سکتی ہے۔
MIN_VALUE کم از کم قدر جو ایک int قسم رکھ سکتی ہے۔
TYPE قسم int سے قسم کی کلاس کی آبجیکٹ لوٹاتا ہے۔
آئیے درج ذیل کوڈ کو چلا کر ان تمام مستقلات کی قدروں کو دیکھتے ہیں۔
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 سے فرق یہ ہے کہ ویلیو آف کا نتیجہ انٹیجر ہوگا، انٹ نہیں۔ آئیے ذیل میں اس طریقہ کار کے تمام اختیارات اور اس کے کام کرنے کی ایک مثال پر غور کریں:
  • static Integer valueOf(int i) - ایک انٹیجر لوٹاتا ہے جس کی قدر i ہے؛
  • static Integer valueOf(String s) - parseInt(String s) کی طرح، لیکن نتیجہ انٹیجر ہوگا۔
  • 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 طریقوں کا استعمال کرتے ہوئے حاصل کیا جاتا ہے ۔ آپ کسی بھی انٹیجر آبجیکٹ پر toString طریقہ کو کال کرسکتے ہیں اور اس کی سٹرنگ کی نمائندگی حاصل کرسکتے ہیں۔
Integer x = 5;
System.out.println(x.toString()); // 5
تاہم، اس حقیقت کی وجہ سے کہ toString طریقہ کو اکثر اشیاء پر واضح طور پر کہا جاتا ہے (مثال کے طور پر، پرنٹنگ کے لیے کنسول پر کسی چیز کو بھیجتے وقت)، یہ طریقہ ڈویلپرز کے ذریعہ شاذ و نادر ہی واضح طور پر استعمال کیا جاتا ہے۔ String کا ایک جامد طریقہ بھی ہے، جو ایک int پیرامیٹر لیتا ہے اور اسے سٹرنگ کی نمائندگی میں تبدیل کرتا ہے۔ مثال کے طور پر:
System.out.println(Integer.toString(5)); // 5
تاہم، غیر جامد toString طریقہ کی طرح، ایک جامد طریقہ کو واضح طور پر استعمال کرنا نایاب ہے۔ زیادہ دلچسپ ہے static طریقہ toString، جو 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

نتیجہ

اس مضمون میں ہم نے انٹیجر کلاس کو دیکھا۔ ہم نے اس بارے میں بات کی کہ یہ کس قسم کی کلاس ہے اور کونسی ریپر کلاسز ہیں۔ ہم نے کلاس کو عملی نقطہ نظر سے دیکھا۔ ہم نے ریاضی کی کارروائیوں کی مثالوں کو دیکھا، بشمول موازنہ آپریشن۔ ہم نے دو انٹیجر متغیرات کا موازنہ کرنے کی پیچیدگیوں پر ایک نظر ڈالی، اور کیشڈ آبجیکٹ کے تصور کا جائزہ لیا۔ ہم نے ڈیٹا کی ابتدائی اقسام کی آٹو پیکنگ/ان پیکنگ کے رجحان کا بھی ذکر کیا۔ اس کے علاوہ، ہم نے انٹیجر کلاس کے کچھ طریقوں کے ساتھ ساتھ کچھ مستقل کو بھی دیکھنے میں کامیاب کیا۔ انہوں نے اعداد کو ایک نمبر سسٹم سے دوسرے نمبر میں تبدیل کرنے کی مثالیں دیں۔

گھر کا کام

  1. مطالعہ کریں کہ انٹیجر کلاس کے اور کون سے طریقے ہیں (آپ ان کا مطالعہ سرکاری دستاویزات کے ساتھ ویب سائٹ پر کر سکتے ہیں)، کمنٹس میں لکھیں کہ آپ نے جن طریقوں کا مطالعہ کیا ہے (مضمون میں دیے گئے طریقوں کو چھوڑ کر) آپ کی رائے میں سب سے زیادہ کارآمد ہے ( آپ کے ذریعہ اکثر استعمال کیا جائے گا)۔ اور اپنی رائے کی وجوہات بھی بتائیں۔

    PS یہاں کوئی صحیح جواب نہیں ہے، لیکن یہ سرگرمی آپ کو کلاس کا بہتر مطالعہ کرنے کی اجازت دے گی۔

  2. مواد کو مستحکم کرنے کے لیے ایک چھوٹا سا سادہ مسئلہ حل کریں۔

    ہمارے پاس دو نمبر ہیں:

    1100001001 - بائنری نمبر سسٹم میں
    33332 - کوئینری نمبر سسٹم میں

    یہ ضروری ہے کہ صرف انٹیجر کلاس کے طریقوں کا استعمال کرتے ہوئے، دو دیے گئے نمبروں کے درمیان زیادہ سے زیادہ کا تعین کریں، اور پھر ٹرنری نمبر سسٹم میں زیادہ سے زیادہ اور کم سے کم قدر کے درمیان فرق کو ظاہر کریں۔

  3. زیادہ سے زیادہ ممکنہ انٹیجر ویلیو کو آکٹل نمبر سسٹم میں تبدیل کریں اور نتیجے میں آنے والے نمبر میں ہندسوں کی تعداد دکھائیں (تعداد کو پروگرام کے لحاظ سے شمار کریں)۔

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