JavaRush /جاوا بلاگ /Random-UR /کافی وقفہ نمبر 174۔ جاوا میں ایک آبجیکٹ بنانے کے مختلف طر...

کافی وقفہ نمبر 174۔ جاوا میں ایک آبجیکٹ بنانے کے مختلف طریقے۔ جاوا میں اسٹرنگ سے انٹ - سٹرنگ کو انٹیجر میں کیسے تبدیل کیا جائے

گروپ میں شائع ہوا۔

جاوا میں آبجیکٹ بنانے کے مختلف طریقے

ماخذ: میڈیم اس ٹیوٹوریل میں، ہم جاوا میں آبجیکٹ بنانے کے مختلف طریقے سیکھیں گے۔ کافی وقفہ نمبر 174۔  جاوا میں کسی چیز کو بنانے کے مختلف طریقے۔ جاوا میں اسٹرنگ سے انٹ - سٹرنگ کو انٹیجر میں کیسے تبدیل کیا جائے - 1جاوا آبجیکٹ جاوا کلاس کی ایک مثال ہے۔ ہر شے کی ایک حالت، ایک رویہ اور ایک شناخت کنندہ ہوتا ہے۔ فیلڈز (متغیرات) کسی شے کی حالت کو محفوظ کرتے ہیں، جبکہ طریقے (فنکشن) کسی چیز کی کارروائی کو ظاہر کرتے ہیں۔ کلاسز "بلیو پرنٹس" کے طور پر کام کرتی ہیں جس سے رن ٹائم پر آبجیکٹ کی مثالیں بنتی ہیں۔

جاوا میں ایک آبجیکٹ بنانا

آبجیکٹ تخلیق کلاس فیلڈز (جسے متغیر بھی کہا جاتا ہے) میں ڈیٹا کو ذخیرہ کرنے کے لیے میموری مختص کرنے کا عمل ہے۔ اس عمل کو اکثر کلاس کی مثال بنانا کہا جاتا ہے۔ جاوا میں اشیاء بنانے کے چار مختلف طریقے ہیں:
  1. نئے مطلوبہ الفاظ کا استعمال کرتے ہوئے
  2. طریقہ newInstance()
  3. کلون () طریقہ
  4. کسی چیز کو غیر سیریل کرنا
اب آئیے ذکر کردہ طریقوں میں سے ہر ایک کو تفصیل سے دیکھتے ہیں۔

کلیدی لفظ نیا

جاوا میں آبجیکٹ بنانے کا یہ سب سے عام طریقہ ہے۔ نیا کلیدی لفظ مخصوص قسم کی نئی مثال کے لیے میموری مختص کرکے کلاس کی مثال بناتا ہے۔ نئے کے بعد کنسٹرکٹر آتا ہے - ایک خاص طریقہ جو کسی چیز کو بنانے اور تخلیق شدہ آبجیکٹ کے فیلڈز کو شروع کرنے کے لیے ذمہ دار ہے۔ ایک آبجیکٹ نئے آپریٹر کے ساتھ بنایا جاتا ہے اور کنسٹرکٹر کے ساتھ شروع کیا جاتا ہے۔ یہاں نئے آپریٹر کے ساتھ جاوا آبجیکٹ بنانے کی ایک مثال ہے ۔
Date today = new Date();
یہ اظہار ایک نیا Date آبجیکٹ تیار کرتا ہے ( Date java.util پیکیج کے اندر ایک کلاس ہے )۔ کوڈ میں یہ واحد شق تین کام انجام دیتی ہے: اعلان، انسٹیٹیئشن، اور ابتدا۔ آج کی تاریخ ایک متغیر اعلامیہ ہے جو مرتب کرنے والے کو مطلع کرتا ہے کہ آج قسم کی کسی چیز کا حوالہ دے گا Date ۔ نیا آپریٹر Date کلاس (میموری میں ایک نیا Date آبجیکٹ تخلیق کرتا ہے ) کو انسٹینٹیٹ کرتا ہے، اور Date() آبجیکٹ کو شروع کرتا ہے۔ ذیل کی مثال پر غور کریں:
public class Person {
    private String name;
    private int uid;

    public Person() {
        this.name = "Michael Cole";
        this.uid = 101;
    }

    public Person(String name, int uid) {
        super();
        this.name = name;
        this.uid = uid;
    }

    // getters and setters...

    public static void main(String[] args) {

        Person p1 = new Person();
        Person p2 = new Person("John Bodgan", 102);
        System.out.println("Name: " + p1.getName() + " UID: " + p1.getUid());
        System.out.println("Name: " + p2.getName() + " UID: " + p2.getUid());
    }
}
اس کوڈ سے، ہم نئے کلیدی لفظ کا استعمال کرتے ہوئے ایک Person آبجیکٹ بناتے ہیں :
  • p1 آبجیکٹ ایک غیر پیرامیٹرائزڈ کنسٹرکٹر کو کال کرتا ہے جس میں متغیر نام کی قدر "مائیکل کول" پر سیٹ ہوتی ہے اور UID کو 101 پر سیٹ کیا جاتا ہے۔
  • p2 آبجیکٹ پیرامیٹرائزڈ کنسٹرکٹر کو کال کرتا ہے، جہاں یہ کنسٹرکٹر کو ویلیو "جان بوڈگن" اور 102 پاس کرتا ہے۔ ان اقدار کو پھر ایک متغیر نام اور UID تفویض کیا جاتا ہے۔

newInstance() طریقہ استعمال کرنا

جاوا میں newInstance() طریقہ استعمال کیا جاتا ہے متحرک طور پر دی گئی کلاس کی کسی چیز کی مثال بنانے کے لیے۔ newInstance() طریقہ کے دو معیاری استعمال ہیں :
  • newInstance() طریقہ java.lang.Class API سے
  • newInstance() طریقہ java.lang.reflect.Constructor API سے

کلاس API سے newInstance() کا استعمال کرنا

رن ٹائم پر کلاس کا ایک آبجیکٹ بنانے کے لیے، ہمیں کلاس API سے newInstance() طریقہ کو کال کرنا چاہیے، جو اس کلاس کا ایک آبجیکٹ واپس کرتا ہے۔ java.lang.Class کلاس کا newInstance() طریقہ کوئی پیرامیٹرز یا آرگیومینٹس نہیں لیتا ہے اور اسے اس کلاس کے لیے بغیر دلیل کنسٹرکٹر کہا جا سکتا ہے۔ آئیے java.lang.Class کلاس کے newInstance() طریقہ کا استعمال کرتے ہوئے پرسن کلاس کی آبجیکٹ بنانے کے لیے کچھ مثالی کوڈ دیکھیں ۔
public class Person {
    private String name;
    private int uid;

    public Person() {
        this.name = "Carl Max";
        this.uid = 101;
    }

   // getters and setters...
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class c = Class.forName("com.medium.option2.Person");
        @SuppressWarnings("deprecation")
        Person p = (Person) c.newInstance();
        System.out.println("Name: " + p.getName());
        System.out.println("UID: " + p.getUid());
    }
}
Class.forName (کلاس کا مکمل طور پر اہل نام) ایک کلاس کو لوڈ کرتا ہے جس کا نام Person ہے ، پھر newInstance() Person قسم کا ایک نیا آبجیکٹ بناتا ہے اور اس کا حوالہ واپس کرتا ہے۔ اب، پرسن کا حوالہ استعمال کرتے ہوئے p ، ہم اس کے getters() اور setter() کو کچھ اعمال انجام دینے کے لیے کہہ سکتے ہیں ۔ براہ مہربانی نوٹ کریں:
  • دونوں Class.forName() اور newIstance() تھرو استثنیات ہیں جنہیں کوشش اور کیچ بلاکس یا تھرو کلیدی لفظ کے استعمال سے ہینڈل کیا جانا چاہیے ۔
  • کلاس API سے newInstance() طریقہ جاوا 9 سے فرسودہ ہے۔

کنسٹرکٹر API سے newInstance() کا استعمال کرنا

کنسٹرکٹر کلاس کا newInstance() طریقہ ( java.lang.reflect.Constructor ) کلاس کلاس کے newInstance() طریقہ سے ملتا جلتا ہے ، سوائے اس کے کہ یہ پیرامیٹرائزڈ کنسٹرکٹرز کے پیرامیٹرز کو قبول کرتا ہے۔ آئیے java.lang.reflect.Constructor کلاس کے newInstance() طریقہ کا استعمال کرتے ہوئے پرسن کلاس کا ایک آبجیکٹ بنا کر اس نقطہ نظر کا مظاہرہ کریں :
public class PersonTwo {
    private String name;
    private int uid;

    public PersonTwo() {
        this.name = "Maya Kumari";
        this.uid = 101;
    }

    public PersonTwo(String name) {
        this.name = name;
        this.uid = 102;
    }

    public PersonTwo(String name, Integer uid) {
        this.name = name;
        this.uid = uid;
    }

    // getters and setters...
    public static void main(String[] args) {
        try {
            Class.forName("com.medium.option2.PersonTwo");

            Constructor c1 = PersonTwo.class.getConstructor();
            PersonTwo p1 = (PersonTwo) c1.newInstance();
            System.out.println("Name: " + p1.getName());
            System.out.println("UID: " + p1.getUid());

            Constructor c2 = PersonTwo.class.getConstructor(String.class);
            PersonTwo p2 = (PersonTwo) c2.newInstance("James Gunn");
            System.out.println("Name: " + p2.getName());
            System.out.println("UID: " + p2.getUid());

            Constructor c3 = PersonTwo.class.getConstructor(String.class, Integer.class);
            PersonTwo p3 = (PersonTwo) c3.newInstance("Mark Brown", 103);
            System.out.println("Name: " + p3.getName());
            System.out.println("UID: " + p3.getUid());

        } catch (ClassNotFoundException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}
مندرجہ بالا کوڈ میں، پہلے ہمیں Class.forName() طریقہ استعمال کرکے کلاس لوڈ کرنے کی ضرورت ہے ۔ اگلا، ہم پاس شدہ پیرامیٹرز کے ڈیٹا کی اقسام سے ملنے کے لیے getConstructor() طریقہ کو کال کریں گے۔ آخر میں، newInstance() طریقہ میں ہم مطلوبہ پیرامیٹر کو پاس کرتے ہیں ( اگر کوئی دلیل نہیں ہے تو null )۔ newInstance() طریقہ مناسب کنسٹرکٹر کو کال کرکے PersonTwo کلاس کا ایک نیا آبجیکٹ واپس کرے گا ۔

clone() طریقہ استعمال کرنا

clone() طریقہ آبجیکٹ کلاس کا حصہ ہے اور اسے موجودہ آبجیکٹ کی کاپی بنانے کے لیے استعمال کیا جاتا ہے۔ یہ کسی بھی کلاس کنسٹرکٹر کو کال کیے بغیر کلاس کا ایک آبجیکٹ بناتا ہے۔ کسی طریقہ کو کلون کرنے کے لیے، متعلقہ کلاس نے Cloneable انٹرفیس کو لاگو کیا ہوگا ، جو ایک مارکر انٹرفیس ہے۔ اب ہم پرسن کلاس کا ایک آبجیکٹ بنائیں گے اور پھر اسے پرسن کلاس کے دوسرے آبجیکٹ میں کلون کریں گے :
public class Person implements Cloneable {
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    private String name;
    private int uid;

    public Person(String name, int uid) {
        super();
        this.name = name;
        this.uid = uid;
    }

    // getters and setters...

    public static void main(String[] args) {
        Person p1 = new Person("Ryan", 101);
        try {
            Person p2 = (Person) p1.clone();
            System.out.println("Name: " + p2.getName());
            System.out.println("UID: " + p2.getUid());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }

    }
}
نوٹ. کلون شدہ آبجیکٹ p2 حوالہ کے ذریعے اسی اصل آبجیکٹ کا حوالہ دے گا ۔ تاہم، کلون شدہ آبجیکٹ میں ایک الگ میموری اسائنمنٹ ہوگی۔ اس کا مطلب یہ ہے کہ p2 کے ذریعہ حوالہ کردہ Person آبجیکٹ میں کی گئی کوئی بھی تبدیلی p1 کے ذریعہ حوالہ کردہ اصل شخص آبجیکٹ کو تبدیل نہیں کرے گی ۔ اس کی وجہ یہ ہے کہ clone() طریقہ اشیاء کی اتلی کاپی بناتا ہے۔

آبجیکٹ ڈی سیریلائزیشن کا استعمال

آبجیکٹ ڈی سیریلائزیشن بائٹ اسٹریمز کی ایک سیریز سے کسی چیز کو نکالنے کا عمل ہے۔ سیریلائزیشن اس کے برعکس کرتی ہے۔ اس کا بنیادی مقصد ڈیٹا بیس/نیٹ ورک سے ذخیرہ شدہ آبجیکٹ کو میموری میں واپس لانا ہے۔ اگر ہم کسی چیز کو سیریلائز یا ڈی سیریلائز کرنا چاہتے ہیں تو ہمیں سیریلائز ایبل انٹرفیس (ٹوکن انٹرفیس) کو لاگو کرنے کی ضرورت ہے۔ ذیل کی مثال پر غور کریں:
public class PersonDriver {

    public static void main(String[] args) {
        Person p1 = new Person("Max Payne", 101);
        FileOutputStream fileOutputStream;
        try {
            fileOutputStream = new FileOutputStream("link to text file");
            ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
            outputStream.writeObject(p1);
            outputStream.flush();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileInputStream fileInputStream;
        try {
            fileInputStream = new FileInputStream("link to text file");
            ObjectInputStream inputStream = new ObjectInputStream(fileInputStream);
            Person p2 = (Person) inputStream.readObject();
            System.out.println("Name: " + p2.getName());
            System.out.println("UID: " + p2.getUid());
            inputStream.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
یہاں ہم پہلے پرسن آبجیکٹ کو حوالہ p1 کے ذریعے ٹیکسٹ فائل میں سیریلائز کرتے ہیں۔ writeObject() طریقہ آبجیکٹ کے بائٹ اسٹریم کو ٹیکسٹ فائل میں لکھے گا۔ پھر، آبجیکٹ ڈی سیریلائزیشن کا استعمال کرتے ہوئے، ہم پرسن آبجیکٹ کو واپس p2 میں نکالتے ہیں ۔ اسی طرح readObject() طریقہ آبجیکٹ کے ان پٹ اسٹریم سے کسی آبجیکٹ کو پڑھے گا۔ آخر میں، ہم پرسن آبجیکٹ سے ڈیٹا کو کنسول پر پرنٹ کریں گے۔

نتیجہ

اس مضمون میں، ہم نے جاوا میں آبجیکٹ بنانے کے مختلف طریقوں کے بارے میں سیکھا۔ سب سے پہلے، ہم نے نئے مطلوبہ الفاظ کا استعمال کرتے ہوئے اشیاء بنانے پر غور کیا ، جو کہ سب سے عام طریقہ ہے۔ پھر ہم نے کلاس اور کنسٹرکٹر کلاسز سے newInstance() طریقہ سیکھا ، جو آبجیکٹ بنانے کا ایک اور مقبول طریقہ ہے۔ اس کے بعد ہم نے clone() طریقہ استعمال کیا ، جو ایک نئی آبجیکٹ بنانے کے بجائے موجودہ آبجیکٹ کی اتلی کاپی بناتا ہے۔ آخر میں، ہم نے جاوا میں آبجیکٹ بنانے کے لیے آبجیکٹ سیریلائزیشن اور ڈی سیریلائزیشن کا تصور استعمال کیا۔

جاوا میں سٹرنگ ٹو انٹ - سٹرنگ کو انٹیجر میں کیسے تبدیل کیا جائے۔

ماخذ: FreeCodeCamp آج آپ سیکھیں گے کہ جاوا میں انٹیجر کلاس کے دو طریقوں - parseInt() اور valueOf() کا استعمال کرتے ہوئے سٹرنگ کو انٹیجر میں تبدیل کرنا ہے ۔ سٹرنگ متغیر کی قدر کا استعمال کرتے ہوئے ریاضی کی کارروائیوں کو انجام دیتے وقت یہ آپ کی مدد کرے گا۔ Кофе-брейк #174. Различные способы создания an object в Java.String в Int на Java — How преобразовать строку в целое число - 2

Integer.parseInt کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو انٹیجر میں کیسے تبدیل کیا جائے۔

یہ آپشن فرض کرتا ہے کہ parseInt() طریقہ پیرامیٹر کے بطور عدد میں تبدیل کرنے کے لیے ایک تار لیتا ہے۔
Integer.parseInt(string_varaible)
اس کے استعمال کی مثال دیکھنے سے پہلے، آئیے دیکھتے ہیں کہ جب آپ سٹرنگ ویلیو اور بغیر کسی تبدیلی کے ایک عدد عدد شامل کرتے ہیں تو کیا ہوتا ہے:
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        System.out.println(age + 20);
        // 1020
    }
}
اس کوڈ میں، ہم نے سٹرنگ ویلیو "10" کے ساتھ ایک متغیر عمر بنائی ہے۔ جب ہم نے عدد 20 کو انٹیجر ویلیو میں شامل کیا تو ہمیں 30 کے درست جواب کے بجائے غلطی سے 1020 موصول ہوا۔ اسے parseInt() طریقہ استعمال کرکے درست کیا جا سکتا ہے ۔
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        int age_to_int = Integer.parseInt(age);

        System.out.println(age_to_int + 20);
        // 30
    }
}
یہاں، عمر کے متغیر کو انٹیجر میں تبدیل کرنے کے لیے، ہم نے اسے ایک پیرامیٹر کے طور پر parseInt() طریقہ - Integer.parseInt(age) - میں منتقل کیا اور اسے عمر_to_int نامی متغیر میں محفوظ کیا ۔ اب جب کسی اور عدد میں شامل کیا جاتا ہے تو ہمیں صحیح اضافہ ملتا ہے: age_to_int + 20 ۔

Integer.valueOf کا استعمال کرتے ہوئے جاوا میں سٹرنگ کو انٹیجر میں کیسے تبدیل کیا جائے۔

valueOf() طریقہ parseInt() طریقہ کی طرح کام کرتا ہے ۔ یہ ایک پیرامیٹر کے طور پر ایک سٹرنگ لیتا ہے جسے ایک عدد میں تبدیل کرنے کی ضرورت ہے۔ یہاں ایک مثال ہے:
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        int age_to_int = Integer.valueOf(age);

        System.out.println(age_to_int + 20);
        // 30
    }
}
مندرجہ بالا کوڈ میں آپ وہی چیز دیکھ سکتے ہیں جو پچھلے حصے میں ہے:
  • ہم نے ایک سٹرنگ کو بطور پیرامیٹر valueOf() : Integer.valueOf(age) میں پاس کیا ۔ اسے عمر_to_int نامی متغیر میں محفوظ کیا گیا تھا ۔
  • اس کے بعد ہم نے بنائے گئے متغیر میں 10 کو شامل کیا: age_to_int + 20 ۔ نتیجہ 1020 کے بجائے 30 رہا۔

نتیجہ

اس مضمون میں، ہم نے جاوا میں تاروں کو عدد میں تبدیل کرنے پر تبادلہ خیال کیا۔ سٹرنگ کو انٹیجر میں تبدیل کرنے کے لیے، انٹیجر کلاس کے دو طریقے استعمال کیے گئے - parseInt() اور valueOf() ۔ مبارک کوڈنگ!
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION