JavaRush /مدونة جافا /Random-AR /استراحة القهوة رقم 174. طرق مختلفة لإنشاء كائن في Java.St...

استراحة القهوة رقم 174. طرق مختلفة لإنشاء كائن في Java.String إلى Int في Java - كيفية تحويل السلسلة إلى عدد صحيح

نشرت في المجموعة

طرق مختلفة لإنشاء كائن في Java

المصدر: Medium في هذا البرنامج التعليمي، سوف نتعلم طرقًا مختلفة لإنشاء كائن في Java. استراحة القهوة رقم 174.  طرق مختلفة لإنشاء كائن في Java.String إلى Int في Java - كيفية تحويل سلسلة إلى عدد صحيح - 1كائن Java هو مثيل لفئة Java. كل كائن له حالة، وسلوك، ومعرف. تقوم الحقول (المتغيرات) بتخزين حالة الكائن، بينما تعرض الطرق (الوظائف) عمل الكائن. تعمل الفئات بمثابة "مخططات" يتم من خلالها إنشاء مثيلات الكائن في وقت التشغيل.

إنشاء كائن في جافا

إنشاء الكائن هو عملية تخصيص الذاكرة لتخزين البيانات في حقول الفئة (وتسمى أيضًا المتغيرات). غالبًا ما تسمى هذه العملية بإنشاء مثيل للفئة. هناك أربع طرق مختلفة لإنشاء الكائنات في Java:
  1. باستخدام الكلمة الأساسية الجديدة
  2. طريقة المثيل الجديد ()
  3. طريقة الاستنساخ ().
  4. إلغاء تسلسل كائن
الآن دعونا نلقي نظرة على كل من الطرق المذكورة بالتفصيل.

الكلمة الرئيسية جديدة

هذه هي الطريقة الأكثر شيوعًا لإنشاء كائن في Java. تقوم الكلمة الأساسية الجديدة بإنشاء مثيل للفئة عن طريق تخصيص الذاكرة لمثيل جديد من النوع المحدد. بعد الجديد يأتي المُنشئ - وهي طريقة خاصة مسؤولة عن إنشاء كائن وتهيئة حقول الكائن الذي تم إنشاؤه. يتم إنشاء كائن باستخدام عامل التشغيل الجديد وتهيئته باستخدام مُنشئ. فيما يلي مثال لإنشاء كائن Java باستخدام عامل التشغيل الجديد :
Date today = new Date();
يقوم هذا التعبير بإنشاء كائن تاريخ جديد ( التاريخ عبارة عن فئة داخل الحزمة java.util ). تؤدي هذه الجملة المفردة في الكود ثلاث عمليات: الإعلان، وإنشاء مثيل، والتهيئة. التاريخ اليوم هو إعلان متغير يُعلم المترجم أن اليوم سيشير إلى كائن من النوع 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 مُنشئًا غير محدد المعلمات مع تعيين قيمة اسم المتغير على "Michael Cole" وتعيين UID على 101.
  • يستدعي الكائن p2 المُنشئ ذي المعلمات، حيث يقوم بتمرير القيمة "John Bodgan" و102 إلى المُنشئ، ثم يتم تعيين اسم متغير وUID لهذه القيم.

باستخدام طريقة newInstance()

يتم استخدام طريقة newInstance() في Java لإنشاء مثيل لكائن من فئة معينة ديناميكيًا. هناك استخدامان قياسيان للطريقة newInstance() :
  • طريقة newInstance() من java.lang.Class API
  • طريقة newInstance() من java.lang.reflect.Constructor API

استخدام newInstance() من Class API

لإنشاء كائن من فئة في وقت التشغيل، يجب علينا استدعاء الأسلوب newInstance() من Class API، الذي يقوم بإرجاع كائن من تلك الفئة. لا يأخذ الأسلوب newInstance() للفئة java.lang.Class أي معلمات أو وسائط ويمكن أن يطلق عليه مُنشئ بدون وسيطات لتلك الفئة. دعونا نلقي نظرة على بعض الأمثلة على التعليمات البرمجية لإنشاء كائن من فئة الشخص باستخدام طريقة newInstance() للفئة java.lang.Class :
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() استثناءات يجب معالجتها إما باستخدام كتل المحاولة والالتقاط أو الكلمة الأساسية throws .
  • لقد تم إهمال طريقة newInstance() من Class API منذ Java 9.

استخدام newInstance() من Constructor API

تشبه طريقة newInstance() لفئة Constructor ( java.lang.reflect.Constructor ) طريقة newInstance() لفئة Class ، باستثناء أنها تقبل معلمات للمنشئات ذات المعلمات. دعونا نوضح هذا الأسلوب عن طريق إنشاء كائن من فئة الشخص باستخدام طريقة newInstance() للفئة java.lang.reflect.Constructor :
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() نقوم بتمرير المعلمة المطلوبة ( فارغة إذا لم يكن هناك وسيطة). سيُرجع الأسلوب newInstance() كائنًا جديدًا من فئة PersonTwo عن طريق استدعاء المُنشئ المناسب.

باستخدام طريقة استنساخ ().

تعد طريقة clone () جزءًا من فئة الكائن وتستخدم لإنشاء نسخة من كائن موجود. يقوم بإنشاء كائن من الفئة دون استدعاء أي مُنشئ فئة. لاستنساخ طريقة ما، يجب أن تكون الفئة المقابلة قد طبقت الواجهة القابلة للاستنساخ ، وهي واجهة علامة. سنقوم الآن بإنشاء كائن من فئة الشخص ثم استنساخه في كائن آخر من فئة الشخص :
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 لن تغير كائن الشخص الأصلي المشار إليه بواسطة 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() سوف تقرأ كائنًا من تدفق إدخال الكائن. أخيرًا، سنقوم بطباعة البيانات من كائن الشخص إلى وحدة التحكم.

خاتمة

في هذه المقالة، تعرفنا على الطرق المختلفة لإنشاء كائن في Java. أولاً، نظرنا إلى إنشاء كائنات باستخدام الكلمة الأساسية الجديدة ، وهي الطريقة الأكثر شيوعًا. تعلمنا بعد ذلك طريقة newInstance() من فئتي Class و Constructor ، وهي طريقة شائعة أخرى لإنشاء الكائنات. استخدمنا بعد ذلك طريقة clone() ، التي تنشئ نسخة سطحية من الكائن الموجود بدلاً من إنشاء كائن جديد. وأخيرًا، استخدمنا مفهوم تسلسل الكائنات وإلغاء التسلسل لإنشاء كائنات في Java.

سلسلة إلى Int في Java - كيفية تحويل سلسلة إلى عدد صحيح

المصدر: FreeCodeCamp ستتعلم اليوم كيفية تحويل سلسلة إلى عدد صحيح في Java باستخدام طريقتين من فئة Integer - parseInt() و valueOf() . سيساعدك هذا عند إجراء عمليات رياضية باستخدام قيمة متغير السلسلة. Кофе-брейк #174. Различные способы создания an object в Java.String в Int на Java — How преобразовать строку в целое число - 2

كيفية تحويل سلسلة إلى عدد صحيح في Java باستخدام 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 إلى قيمة عددية، حصلنا عن طريق الخطأ على 1020 بدلاً من الإجابة الصحيحة وهي 30. يمكن تصحيح ذلك باستخدام طريقة 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) - وقمنا بتخزينه في متغير يسمى age_to_int . الآن عند إضافتها إلى عدد صحيح آخر نحصل على الإضافة الصحيحة: age_to_int + 20 .

كيفية تحويل سلسلة إلى عدد صحيح في Java باستخدام 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) . تم تخزينه في متغير يسمى age_to_int .
  • ثم أضفنا 10 إلى المتغير الذي تم إنشاؤه: age_to_int + 20 . وكانت النتيجة 30 بدلا من 1020.

خاتمة

في هذه المقالة، ناقشنا تحويل السلاسل إلى أعداد صحيحة في Java. لتحويل سلسلة إلى عدد صحيح، تم استخدام طريقتين من فئة Integer - parseInt() و valueOf() . ترميز سعيد!
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION