JavaRush /وبلاگ جاوا /Random-FA /قهوه استراحت شماره 174. روش های مختلف برای ایجاد یک شی در...

قهوه استراحت شماره 174. روش های مختلف برای ایجاد یک شی در Java.String به Int در جاوا - نحوه تبدیل رشته به عدد صحیح

در گروه منتشر شد

روش های مختلف برای ایجاد یک شی در جاوا

منبع: Medium در این آموزش با روش های مختلف ساخت یک شی در جاوا آشنا می شویم. قهوه استراحت شماره 174.  روش های مختلف برای ایجاد یک شی در جاوا. رشته به Int در جاوا - نحوه تبدیل رشته به عدد صحیح - 1یک شی جاوا نمونه ای از کلاس جاوا است. هر شی دارای یک حالت، یک رفتار و یک شناسه است. فیلدها (متغیرها) وضعیت یک شی را ذخیره می کنند، در حالی که متدها (توابع) عملکرد یک شی را نشان می دهند. کلاس ها به عنوان "طرح های" عمل می کنند که از آنها نمونه های شی در زمان اجرا ایجاد می شوند.

ایجاد یک شی در جاوا

ایجاد شی فرآیند تخصیص حافظه برای ذخیره داده ها در فیلدهای کلاس (که متغیرها نیز نامیده می شوند) است. این فرآیند اغلب ایجاد یک نمونه از یک کلاس نامیده می شود. چهار روش مختلف برای ایجاد اشیاء در جاوا وجود دارد:
  1. با استفاده از کلمه کلیدی جدید
  2. روش newInstance()
  3. روش clone().
  4. غیراصولی کردن یک شی
حال اجازه دهید هر یک از روش های ذکر شده را به تفصیل بررسی کنیم.

کلمه کلیدی جدید

این رایج ترین راه برای ایجاد یک شی در جاوا است. کلمه کلیدی new یک نمونه از یک کلاس را با تخصیص حافظه برای یک نمونه جدید از نوع مشخص شده ایجاد می کند. پس از new، سازنده می آید - یک روش خاص که مسئول ایجاد یک شی و مقداردهی اولیه فیلدهای شی ایجاد شده است. یک شی با عملگر جدید ایجاد می شود و با یک سازنده مقداردهی اولیه می شود. در اینجا مثالی از ایجاد یک شی جاوا با عملگر جدید آورده شده است :
Date today = new Date();
این عبارت یک شی Date جدید ایجاد می کند ( Date یک کلاس در داخل بسته java.util است ). این بند واحد در کد سه عملیات را انجام می دهد: اعلان، نمونه سازی و مقداردهی اولیه. Date today یک اعلان متغیر است که به کامپایلر اطلاع می دهد که امروز به یک شی از نوع 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 یک سازنده غیر پارامتری را با مقدار نام متغیر روی "Michael Cole" و UID تنظیم شده روی 101 فراخوانی می کند.
  • شی p2 سازنده پارامتر شده را فراخوانی می کند، جایی که مقدار "John Bodgan" و 102 را به سازنده ارسال می کند. سپس به این مقادیر یک نام متغیر و UID اختصاص داده می شود.

با استفاده از متد newInstance()

متد newInstance() در جاوا برای ایجاد پویا یک نمونه از یک شی از یک کلاس مشخص استفاده می شود. دو استفاده استاندارد از متد newInstance() وجود دارد :
  • متد newInstance() از java.lang.Class API
  • متد newInstance() از java.lang.reflect.Constructor API

استفاده از newInstance() از Class API

برای ایجاد یک شی از یک کلاس در زمان اجرا، باید متد newInstance() را از Class API فراخوانی کنیم، که یک شی از آن کلاس را برمی گرداند. متد newInstance() از کلاس java.lang.Class هیچ پارامتر یا آرگومانی نمی گیرد و می توان آن را سازنده بدون آرگومان برای آن کلاس نامید. بیایید به چند کد مثال برای ایجاد یک شی از کلاس Person با استفاده از متد 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 ایجاد می کند و یک مرجع به آن برمی گرداند. حال، با استفاده از مرجع Person به p ، می‌توانیم getters() و setter() را برای انجام اعمال خاصی فراخوانی کنیم. لطفا توجه داشته باشید:
  • هر دو Class.forName() و newIstance() استثناهایی را ایجاد می‌کنند که باید با استفاده از بلوک‌های try and catch یا کلمه کلیدی throws مدیریت شوند .
  • متد newInstance() از Class API از جاوا 9 منسوخ شده است.

استفاده از newInstance() از Constructor API

متد newInstance() کلاس Constructor ( java.lang.reflect.Constructor ) شبیه متد newInstance() کلاس Class است ، با این تفاوت که پارامترها را برای سازنده های پارامتری شده می پذیرد. بیایید این رویکرد را با ایجاد یک شی از کلاس Person با استفاده از متد 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() پارامتر مورد نیاز را پاس می کنیم ( در صورت عدم وجود آرگومان null ). متد newInstance() یک شی جدید از کلاس PersonTwo را با فراخوانی سازنده مناسب برمی گرداند .

با استفاده از متد ()clone

متد ()clone بخشی از کلاس Object است و برای ایجاد یک کپی از یک شی موجود استفاده می شود. یک شی از کلاس را بدون فراخوانی سازنده کلاس ایجاد می کند. برای شبیه سازی یک متد، کلاس مربوطه باید رابط Cloneable را پیاده سازی کرده باشد که یک رابط نشانگر است. اکنون یک شی از کلاس Person ایجاد می کنیم و سپس آن را در شی دیگری از کلاس Person کلون می کنیم :
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 ارجاع خواهد داد . با این حال، شی کلون شده یک تخصیص حافظه جداگانه خواهد داشت. این بدان معنی است که هر تغییری که در شیء Person ارجاع داده شده توسط p2 ایجاد شود، شیء اصلی Person ارجاع شده توسط p1 را تغییر نخواهد داد . دلیلش این است که متد ()clone یک کپی کم عمق از اشیا ایجاد می کند.

استفاده از Object Deserialization

deserialization شیء فرآیند استخراج یک شی از مجموعه ای از جریان های بایت است. سریال سازی برعکس عمل می کند. هدف اصلی آن بازیابی یک شی ذخیره شده از پایگاه داده/شبکه ​​به حافظه است. اگر بخواهیم یک شی را سریالی یا غیر سریالی کنیم، باید رابط Serializable (اینترفیس نشانه) را پیاده سازی کنیم. به مثال زیر توجه کنید:
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();
        }
    }
}
در اینجا ابتدا شی Person را با مرجع p1 در یک فایل متنی سریال می کنیم. متد writeObject() جریان بایت شی را در یک فایل متنی می نویسد. سپس، با استفاده از deserialization شیء، شی Person را دوباره در p2 استخراج می کنیم . به طور مشابه، متد readObject() یک شی را از جریان ورودی شی می خواند. در نهایت داده ها را از شی Person در کنسول چاپ می کنیم .

نتیجه

در این مقاله با روش های مختلف ایجاد یک شی در جاوا آشنا شدیم. ابتدا، ما به ایجاد اشیاء با استفاده از کلمه کلیدی جدید ، که رایج ترین راه است، نگاه کردیم. سپس متد newInstance() را از کلاس‌های Class و Constructor یاد گرفتیم که روش محبوب دیگری برای ایجاد اشیا است. سپس از متد ()clone استفاده کردیم که به جای ایجاد یک شی جدید، یک کپی کم عمق از شی موجود ایجاد می کند. در نهایت، ما از مفهوم سریال سازی شی و سریال زدایی برای ایجاد اشیاء در جاوا استفاده کردیم.

رشته به Int در جاوا - نحوه تبدیل رشته به عدد صحیح

منبع: FreeCodeCamp امروز می آموزید که چگونه با استفاده از دو روش کلاس Integer - 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
    }
}
در این کد یک متغیر age با مقدار رشته “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
    }
}
در اینجا، برای تبدیل متغیر age به عدد صحیح، آن را به عنوان پارامتر به متد parseInt - Integer.parseInt(age) - منتقل کردیم و آن را در متغیری به نام 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) . در متغیری به نام age_to_int ذخیره شد .
  • سپس 10 را به متغیر ایجاد شده اضافه کردیم: age_to_int + 20 . نتیجه به جای 1020 30 شد.

نتیجه

در این مقاله به تبدیل رشته ها به اعداد صحیح در جاوا پرداختیم. برای تبدیل رشته به عدد صحیح، از دو روش کلاس Integer استفاده شد - parseInt() و valueOf() . کد نویسی مبارک!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION