JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 174. Verschiedene Möglichkeiten zum Erste...

Kaffeepause Nr. 174. Verschiedene Möglichkeiten zum Erstellen eines Objekts in Java.String in Int in Java – So konvertieren Sie String in Integer

Veröffentlicht in der Gruppe Random-DE

Verschiedene Möglichkeiten, ein Objekt in Java zu erstellen

Quelle: Medium In diesem Tutorial lernen wir verschiedene Möglichkeiten kennen, ein Objekt in Java zu erstellen. Kaffeepause Nr. 174.  Verschiedene Möglichkeiten, ein Objekt in Java zu erstellen.String in Int in Java – So konvertieren Sie einen String in eine Ganzzahl – 1Ein Java-Objekt ist eine Instanz einer Java-Klasse. Jedes Objekt hat einen Zustand, ein Verhalten und eine Kennung. Felder (Variablen) speichern den Zustand eines Objekts, während Methoden (Funktionen) die Aktion eines Objekts anzeigen. Klassen dienen als „Blaupausen“, aus denen zur Laufzeit Objektinstanzen erstellt werden.

Erstellen eines Objekts in Java

Bei der Objekterstellung handelt es sich um den Prozess der Zuweisung von Speicher zum Speichern von Daten in Klassenfeldern (auch Variablen genannt). Dieser Vorgang wird oft als Erstellen einer Instanz einer Klasse bezeichnet. Es gibt vier verschiedene Möglichkeiten, Objekte in Java zu erstellen:
  1. mit dem neuen Schlüsselwort
  2. Methode newInstance()
  3. clone()- Methode
  4. Deserialisieren eines Objekts
Schauen wir uns nun jede der genannten Methoden im Detail an.

Stichwort neu

Dies ist die gebräuchlichste Methode zum Erstellen eines Objekts in Java. Das Schlüsselwort new erstellt eine Instanz einer Klasse, indem es Speicher für eine neue Instanz des angegebenen Typs zuweist. Nach new kommt der Konstruktor – eine spezielle Methode, die für die Erstellung eines Objekts und die Initialisierung der Felder des erstellten Objekts verantwortlich ist. Ein Objekt wird mit dem neuen Operator erstellt und mit einem Konstruktor initialisiert. Hier ist ein Beispiel für die Erstellung eines Java-Objekts mit dem neuen Operator :
Date today = new Date();
Dieser Ausdruck generiert ein neues Date- Objekt ( Date ist eine Klasse im java.util- Paket ). Diese einzelne Klausel im Code führt drei Vorgänge aus: Deklaration, Instanziierung und Initialisierung. Date today ist eine Variablendeklaration, die den Compiler darüber informiert, dass today auf ein Objekt vom Typ Date verweist . Der neue Operator instanziiert die Date- Klasse (erstellt ein neues Date- Objekt im Speicher) und Date() initialisiert das Objekt. Betrachten Sie das folgende Beispiel:
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());
    }
}
Aus diesem Code erstellen wir ein Person- Objekt mit dem neuen Schlüsselwort :
  • Das p1- Objekt ruft einen nicht parametrisierten Konstruktor auf, dessen Variablennamen auf „Michael Cole“ und die UID auf 101 festgelegt ist.
  • Das p2- Objekt ruft den parametrisierten Konstruktor auf und übergibt dort den Wert „John Bodgan“ und 102. Diesen Werten wird dann ein Variablenname und eine UID zugewiesen.

Verwendung der newInstance()-Methode

Die Methode newInstance() in Java wird verwendet, um dynamisch eine Instanz eines Objekts einer bestimmten Klasse zu erstellen. Es gibt zwei Standardverwendungen der newInstance() -Methode :
  • newInstance() -Methode aus der java.lang.Class- API
  • newInstance() -Methode aus der java.lang.reflect.Constructor- API

Verwenden von newInstance() aus der Klassen-API

Um zur Laufzeit ein Objekt einer Klasse zu erstellen, müssen wir die Methode newInstance() aus der Klassen-API aufrufen, die ein Objekt dieser Klasse zurückgibt. Die Methode newInstance() der Klasse java.lang.Class akzeptiert keine Parameter oder Argumente und kann als Konstruktor ohne Argumente für diese Klasse bezeichnet werden. Schauen wir uns einen Beispielcode zum Erstellen eines Objekts der Person- Klasse mithilfe der newInstance() -Methode der Klasse java.lang.Class an :
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 (der vollständig qualifizierte Name der Klasse) lädt eine Klasse mit dem Namen Person , dann erstellt newInstance() ein neues Objekt vom Typ Person und gibt einen Verweis darauf zurück. Mithilfe der Person- Referenz auf p können wir nun deren getter() und setter() aufrufen , um bestimmte Aktionen auszuführen. Bitte beachten Sie:
  • Sowohl Class.forName() als auch newIstance() lösen Ausnahmen aus, die entweder mit Try- und Catch -Blöcken oder mit dem Schlüsselwort throws behandelt werden müssen .
  • Die newInstance()- Methode der Klassen-API ist seit Java 9 veraltet.

Verwenden von newInstance() aus der Constructor-API

Die newInstance() -Methode der Constructor- Klasse ( java.lang.reflect.Constructor ) ähnelt der newInstance()- Methode der Class- Klasse , außer dass sie Parameter für parametrisierte Konstruktoren akzeptiert. Lassen Sie uns diesen Ansatz demonstrieren, indem wir ein Objekt der Person- Klasse mithilfe der newInstance()- Methode der java.lang.reflect.Constructor- Klasse erstellen :
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();
        }

    }
}
Im obigen Code müssen wir zuerst die Klasse mit der Methode Class.forName() laden . Als nächstes rufen wir die Methode getConstructor() auf , um die Datentypen der übergebenen Parameter abzugleichen. Schließlich übergeben wir in der Methode newInstance() den erforderlichen Parameter ( null , wenn kein Argument vorhanden ist). Die Methode newInstance() gibt ein neues Objekt der Klasse PersonTwo zurück , indem sie den entsprechenden Konstruktor aufruft.

Verwendung der clone()-Methode

Die clone()- Methode ist Teil der Object- Klasse und wird verwendet, um eine Kopie eines vorhandenen Objekts zu erstellen. Es erstellt ein Objekt der Klasse, ohne einen Klassenkonstruktor aufzurufen. Um eine Methode zu klonen, muss die entsprechende Klasse die Cloneable- Schnittstelle implementiert haben , bei der es sich um eine Markierungsschnittstelle handelt. Jetzt erstellen wir ein Objekt der Person- Klasse und klonen es dann in ein anderes Objekt der Person- Klasse :
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();
        }

    }
}
Notiz. Das geklonte Objekt verweist über die p2 -Referenz auf dasselbe Originalobjekt . Das geklonte Objekt verfügt jedoch über eine separate Speicherzuweisung. Dies bedeutet, dass Änderungen am Person- Objekt, auf das p2 verweist, nicht das ursprüngliche Person- Objekt ändern, auf das p1 verweist . Dies liegt daran, dass die clone()- Methode eine flache Kopie von Objekten erstellt.

Verwenden der Objektdeserialisierung

Bei der Objektdeserialisierung wird ein Objekt aus einer Reihe von Byteströmen extrahiert. Die Serialisierung bewirkt das Gegenteil. Sein Hauptzweck besteht darin, ein gespeichertes Objekt aus der Datenbank/dem Netzwerk zurück in den Speicher abzurufen. Wenn wir ein Objekt serialisieren oder deserialisieren möchten, müssen wir die Serializable- Schnittstelle (Token-Schnittstelle) implementieren. Betrachten Sie das folgende Beispiel:
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();
        }
    }
}
Hier serialisieren wir zunächst das Personenobjekt anhand der Referenz p1 in eine Textdatei. Die Methode writeObject() schreibt den Bytestream des Objekts in eine Textdatei. Dann extrahieren wir mithilfe der Objektdeserialisierung das Person- Objekt zurück in p2 . In ähnlicher Weise liest die Methode readObject() ein Objekt aus dem Eingabestream des Objekts. Abschließend drucken wir die Daten vom Person- Objekt auf der Konsole aus.

Abschluss

In diesem Artikel haben wir die verschiedenen Möglichkeiten zum Erstellen eines Objekts in Java kennengelernt. Zuerst haben wir uns die Erstellung von Objekten mit dem Schlüsselwort new angesehen , was die gebräuchlichste Methode ist. Anschließend haben wir die Methode newInstance() aus den Klassen Class und Constructor gelernt , eine weitere beliebte Methode zum Erstellen von Objekten. Anschließend haben wir die clone()- Methode verwendet , die eine flache Kopie des vorhandenen Objekts erstellt, anstatt ein neues Objekt zu erstellen. Schließlich haben wir das Konzept der Objektserialisierung und -deserialisierung verwendet, um Objekte in Java zu erstellen.

String in Int in Java – wie man einen String in eine Ganzzahl umwandelt

Quelle: FreeCodeCamp Heute erfahren Sie, wie Sie in Java mit zwei Methoden der Integer- Klasse – parseInt() und valueOf() – einen String in eine Ganzzahl konvertieren . Dies hilft Ihnen bei der Durchführung mathematischer Operationen mit dem Wert einer String-Variablen. Kaffeepause Nr. 174.  Verschiedene Möglichkeiten, ein Objekt in Java zu erstellen.String in Int in Java – So konvertieren Sie String in Integer – 2

So konvertieren Sie eine Zeichenfolge in Java mit Integer.parseInt in eine Ganzzahl

Diese Option geht davon aus, dass die parseInt()- Methode einen String als Parameter zur Konvertierung in eine Ganzzahl benötigt:
Integer.parseInt(string_varaible)
Bevor wir uns ein Anwendungsbeispiel ansehen, sehen wir uns an, was passiert, wenn Sie einen Zeichenfolgenwert und eine Ganzzahl ohne Konvertierung hinzufügen:
class StrToInt {
    public static void main(String[] args) {
        String age = "10";

        System.out.println(age + 20);
        // 1020
    }
}
In diesem Code haben wir eine Variable age mit dem Stringwert „10“ erstellt. Als wir die Zahl 20 zu einem ganzzahligen Wert addierten, erhielten wir fälschlicherweise 1020 anstelle der richtigen Antwort von 30. Dies kann mit der Methode parseInt() korrigiert werden :
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
    }
}
Um die Altersvariable in eine Ganzzahl umzuwandeln, haben wir sie hier als Parameter an die parseInt() -Methode – Integer.parseInt(age) – übergeben und in einer Variablen namens age_to_int gespeichert . Wenn wir nun zu einer anderen Ganzzahl addieren, erhalten wir die korrekte Addition: age_to_int + 20 .

So konvertieren Sie eine Zeichenfolge in Java mit Integer.valueOf in eine Ganzzahl

Die Methode valueOf() funktioniert genauso wie die Methode parseInt() . Als Parameter wird eine Zeichenfolge benötigt, die in eine Ganzzahl konvertiert werden muss. Hier ist ein Beispiel:
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
    }
}
Im obigen Code sehen Sie dasselbe wie im vorherigen Abschnitt:
  • Wir haben einen String als Parameter an valueOf() übergeben : Integer.valueOf(age) . Es wurde in einer Variablen namens age_to_int gespeichert .
  • Anschließend haben wir 10 zur erstellten Variablen hinzugefügt: age_to_int + 20 . Das Ergebnis war 30 statt 1020.

Abschluss

In diesem Artikel haben wir die Konvertierung von Zeichenfolgen in Ganzzahlen in Java erläutert. Um einen String in eine Ganzzahl umzuwandeln, wurden zwei Methoden der Integer- Klasse verwendet – parseInt() und valueOf() . Viel Spaß beim Codieren!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION