JavaRush /Java блогы /Random-KK /Кофе-брейк №174. Java.String to Int Java тілінде нысанды ...

Кофе-брейк №174. Java.String to Int Java тілінде нысанды жасаудың әртүрлі тәсілдері - жолды бүтін санға қалай түрлендіру керек

Топта жарияланған

Java тілінде an object құрудың әртүрлі тәсілдері

Дереккөз: Орташа Бұл оқулықта біз Java тілінде нысан жасаудың әртүрлі жолдарын үйренеміз. Кофе-брейк №174.  Java.String to Int Java тілінде нысанды жасаудың әртүрлі тәсілдері - Жолды бүтін санға қалай түрлендіру - 1Java нысаны Java класының данасы болып табылады. Әрбір нысанның күйі, мінез-құлқы және идентификаторы болады. Өрістер (айнымалылар) an objectінің күйін сақтайды, ал әдістер (функциялар) an objectінің әрекетін көрсетеді. Сыныптар орындалу уақытында нысан даналары жасалатын «сызбалар» ретінде қызмет етеді.

Java тілінде an object құру

Объектіні құру – класс өрістерінде (айнымалылар деп те аталады) деректерді сақтау үшін жадты бөлу процесі. Бұл процесс көбінесе класс данасын жасау деп аталады. Java тілінде нысандарды жасаудың төрт түрлі жолы бар:
  1. new кілт сөзін пайдалану
  2. newInstance() әдісі
  3. clone() әдісі
  4. an objectіні сериядан шығару
Енді аталған әдістердің әрқайсысын егжей-тегжейлі қарастырайық.

Жаңа кілт сөз

Бұл Java тілінде an object жасаудың ең кең тараған тәсілі. Жаңа кілт сөзі көрсетілген түрдің жаңа данасы үшін жадты бөлу арқылы сынып данасын жасайды. Жаңадан кейін конструктор келеді - нысанды жасауға және жасалған нысанның өрістерін инициализациялауға жауапты арнайы әдіс. Нысан жаңа оператормен жасалады және конструктормен инициализацияланады. Жаңа оператормен Java нысанын жасаудың мысалы :
Date today = new 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());
    }
}
Осы codeтан біз new кілт сөзін пайдаланып Person нысанын жасаймыз :
  • p1 нысаны айнымалы атауының мәні «Майкл Коул» және UID 101 мәніне орнатылған параметрі жоқ конструкторды шақырады.
  • p2 нысаны параметрленген конструкторды шақырады, онда ол конструкторға «Джон Бодган» және 102 мәнін береді.Одан кейін бұл мәндерге айнымалы атауы және UID тағайындалады.

newInstance() әдісін пайдалану

Java тіліндегі newInstance() әдісі берілген сынып an objectісінің данасын динамикалық түрде жасау үшін қолданылады. 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 сыныбының newInstance() әдісін пайдаланып Person класының an objectісін жасау үшін кейбір code мысалдарын қарастырайық :
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 үшін Person сілтемесін пайдаланып, белгілі бір әрекеттерді орындау үшін оның getters() және setter() деп атауға болады . Ескерту:
  • Class.forName() және newIstance() екеуі де try and catch блоктары немесе throws кілт сөзі арқылы өңделуі тиіс ерекше жағдайларды шығарады .
  • API сыныпындағы newInstance() әдісі Java 9 нұсқасынан бері ескірген.

Конструктор API ішінен newInstance() пайдалану

Конструктор класының newInstance() әдісі ( java.lang.reflect.Constructor ) Класс сыныбының newInstance() әдісіне ұқсас , тек ол параметрленген конструкторлар үшін параметрлерді қабылдайды. Бұл тәсілді java.lang.reflect.Constructor сыныбының newInstance() әдісі арқылы Person класының an objectісін жасау арқылы көрсетейік :
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();
        }

    }
}
Жоғарыдағы codeта алдымен Class.forName() әдісі арқылы сыныпты жүктеуіміз керек . Әрі қарай, берілген параметрлердің деректер түрлерін сәйкестендіру үшін getConstructor() әдісін шақырамыз . Соңында, newInstance() әдісінде біз қажетті параметрді ( аргумент жоқ болса, null ) жібереміз. newInstance() әдісі сәйкес конструкторды шақыру арқылы PersonTwo класының жаңа нысанын қайтарады .

clone() әдісін қолдану

clone() әдісі Object класының бөлігі болып табылады және бар нысанның көшірмесін жасау үшін пайдаланылады. Ол кез келген класс конструкторын шақырмай-ақ сынып an objectісін жасайды. Әдісті клондау үшін сәйкес сынып Cloneable интерфейсін іске асырған болуы керек , ол маркер интерфейсі болып табылады. Енді біз Person класының an objectісін жасаймыз , содан кейін оны Person класының басқа an objectісіне клондаймыз :
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 сілтеме жасаған бастапқы Person нысанын өзгертпейтінін білдіреді . Себебі clone() әдісі нысандардың таяз көшірмесін жасайды.

Объектіні сериядан шығаруды пайдалану

Объектіні сериядан шығару - byte ағындарының қатарынан нысанды шығару процесі. Серияландыру керісінше жасайды. Оның негізгі мақсаты сақталған an objectіні дерекқордан/желіден жадқа қайтару болып табылады. Егер біз an objectіні сериялауды немесе сериядан шығаруды қаласақ, 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() әдісі нысанның byte ағынын мәтіндік файлға жазады. Содан кейін, нысанды сериядан шығаруды пайдалана отырып, біз Person нысанын қайтадан p2 ішіне шығарамыз . Сол сияқты readObject() әдісі нысанның кіріс ағынынан нысанды оқиды. Соңында біз Person нысанындағы деректерді консольге басып шығарамыз.

Қорытынды

Бұл мақалада біз Java-да нысанды жасаудың әртүрлі жолдары туралы білдік. Біріншіден, біз ең көп таралған әдіс болып табылатын new кілт сөзін пайдаланып нысандарды құруды қарастырдық . Содан кейін біз newInstance() әдісін Class және Constructor сыныптарынан үйрендік , бұл нысандарды жасаудың тағы бір танымал тәсілі. Содан кейін біз жаңа нысан жасаудың орнына бар нысанның таяз көшірмесін жасайтын clone() әдісін қолдандық. Соңында, Java-да нысандарды жасау үшін an objectіні сериялау және сериядан шығару тұжырымдамасын қолдандық.

Java тіліндегі String to Int – жолды бүтін санға қалай түрлендіру керек

Дереккөз: FreeCodeCamp Бүгін сіз Integer класының екі әдісі - parseInt() және valueOf() арқылы Java тілінде жолды бүтін санға түрлендіруді үйренесіз . Бұл жол айнымалысының мәнін пайдаланып математикалық операцияларды орындау кезінде сізге көмектеседі. Кофе-брейк #174. Различные способы создания an object в Java.String в Int на Java — How преобразовать строку в целое число - 2

Integer.parseInt көмегімен жолды Java тілінде бүтін санға қалай түрлендіруге болады

Бұл опция parseInt() әдісі параметр ретінде бүтін санға түрлендіру үшін жолды қабылдайды деп болжайды:
Integer.parseInt(string_varaible)
Оны пайдалану мысалын қарастырмас бұрын, жол мәнін және бүтін санды түрлендірусіз қосқанда не болатынын көрейік:
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        System.out.println(age + 20);
        // 1020
    }
}
Бұл codeта біз «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) - және оны age_to_int деп аталатын айнымалыда сақтадық . Енді басқа бүтін санға қосқанда дұрыс қосуды аламыз: age_to_int + 20 .

Integer.valueOf көмегімен жолды Java тілінде бүтін санға қалай түрлендіруге болады

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
    }
}
Жоғарыдағы codeта сіз алдыңғы бөлімдегідей нәрсені көре аласыз:
  • Жолды параметр ретінде valueOf() параметріне бердік : Integer.valueOf(age) . Ол age_to_int деп аталатын айнымалыда сақталды .
  • Содан кейін жасалған айнымалыға 10 қостық: age_to_int + 20 . Нәтиже 1020 орнына 30 болды.

Қорытынды

Бұл мақалада біз Java тіліндегі жолдарды бүтін сандарға түрлендіруді талқыладық. Жолды бүтін санға түрлендіру үшін Integer класының екі әдісі қолданылды - parseInt() және valueOf() . Бақытты codeтау!
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION