it-swarm.com.de

Was genau ist eine Instanz in Java?

Was ist der Unterschied zwischen einem Objekt, einer Instanz und einer Referenz? Sie sagen, dass sie eine Instanz für ihre Anwendung erstellen müssen? Was bedeutet das?

44
priya

Ein Objekt und eine Instanz sind die dasselbe.

Ich persönlich bevorzuge die Verwendung der Word- "Instanz", wenn auf ein bestimmtes Objekt eines bestimmten Typs verwiesen wird, beispielsweise "eine Instanz des Typs Foo". Wenn ich im Allgemeinen über Objekte spreche, würde ich eher "Objekte" als "Instanzen" sagen. 

Eine Referenz verweist entweder auf ein bestimmtes Objekt oder kann eine Nullreferenz sein.


Sie sagen, dass sie eine Instanz für ihre Anwendung erstellen müssen. Was heißt das?

Sie bedeuten wahrscheinlich, dass Sie so etwas schreiben müssen:

Foo foo = new Foo();

Wenn Sie nicht sicher sind, welchen Typ Sie instanziieren sollten, wenden Sie sich an die Entwickler der Anwendung und bitten Sie um ein vollständigeres Beispiel.

68
Mark Byers

"Instanz zu einer Anwendung" bedeutet nichts.

"Objekt" und "Instanz" sind dasselbe. Es gibt eine "Klasse", die die Struktur und Instanzen dieser Klasse definiert (erhalten mit new ClassName()). Zum Beispiel gibt es die Klasse Car, und es gibt Instanzen mit unterschiedlichen Eigenschaften wie Kilometerstand, Höchstgeschwindigkeit, Pferdestärke, Marke usw.

Referenz ist im Java-Kontext eine Variable * - etwas, das auf ein Objekt/eine Instanz verweist. Beispielsweise ist String s = null; - s eine Referenz, die derzeit keine Instanz referenziert, jedoch eine Instanz der String-Klasse referenzieren kann.

* Jon Skeet notierte sich den Unterschied zwischen einer Variablen und einer Referenz. Siehe seinen Kommentar. Es ist ein wichtiger Unterschied, wie Java funktioniert, wenn Sie eine Methode aufrufen - Wertübergabe. 

Der Wert von s ist eine Referenz. Es ist sehr wichtig, zwischen Variablen und Werten sowie Objekten und Referenzen zu unterscheiden.

10
Bozho

Ich denke dieses Objekt = Instanz. Referenz ist ein "Link" zu einem Objekt.

Car c = new Car();

die Variable c speichert eine Referenz auf ein Objekt vom Typ Car.

8
Voooza

Wenn Sie das Schlüsselwort new zum Beispiel JFrame j = new JFrame(); verwenden, erstellen Sie eine Instanz der Klasse JFrame

Der new-Operator instantiiert eine Klasse durch Zuweisen von Speicher für eine neue Objekt und Rückgabe einer Referenz auf diese Erinnerung.
Hinweis: Der Ausdruck "Instanziieren einer Klasse" bedeutet dasselbe wie msgstr "ein Objekt erstellen." Beim Erstellen von ein Objekt, erstellen Sie eine "Instanz" einer Klasse, daher eine Klasse "instanziieren".

Schauen Sie sich hier um
Objekte erstellen


Die Typen der Java-Programmierung Die Sprache ist in zwei Hälften geteilt. Kategorien: primitive types und reference Typen.
Die reference-Typen sind class-Typen, interface-Typen und array Typen.
Es gibt auch ein besonderes null Typ.
Ein Objekt ist ein dynamisch erstellte Instanz eines class-Typ oder ein dynamisch erstellter array.
Die Werte eines reference Typ sind Verweise auf Objekte.

Weitere Informationen finden Sie unter Typen, Werte und Variablen

7
Alpine
Computer c= new Computer()

Hier wird ein Objekt aus der Computer-Klasse erstellt. Eine Referenz namens c ermöglicht dem Programmierer den Zugriff auf das Objekt.

5
vijay

Der Hauptunterschied ist, wenn Sie ClassName sagen: obj = null; Sie erstellen gerade ein Objekt für diese Klasse. Es ist keine Instanz dieser Klasse.

Mit dieser Anweisung wird nur Speicher für die statischen meber-Variablen zugewiesen, nicht für die normalen Member-Variablen.

Aber wenn Sie ClassName sagen, obj = new ClassName (); Sie erstellen eine Instanz der Klasse. Diese Station wird dem Speicher alle Member-Variablen zuweisen.

4
Kumar

im Wesentlichen sind Objekt und Instanz die beiden Wörter, die austauschbar verwendet werden .. Eine Klasse ist eine Vorlage für ein Objekt und ein Objekt ist eine Instanz einer Klasse.

3
karunesh pal

"Erstellen einer Instanz einer Klasse" wie wäre es damit, "Sie nehmen eine Klasse und machen eine neue Variable dieser Klasse, die sich WILL ändert, abhängig von einer Eingabe, die sich ändert"

Klasse in der Bibliothek namens Nacho

variable Libre für die "Instanz", die sich ändern wird

Nacho Libre = new Nacho (Variable, Scannereingabe oder was auch immer hier geht.) Dies ist der Ort, an dem die Änderungen übernommen werden. Der Wert wird dann in "Libre" auf der linken Seite des Gleichheitszeichens gesetzt (Sie wissen, "Nacho Libre = new Nacho ( Scanner.in) "" Nacho Libre "ist auf der linken Seite des = (das ist kein Technikgespräch, das ist meine Art, es zu erklären)

Ich denke, das ist besser als "Instanz des Typs" oder "Instanz der Klasse" zu sagen. Der springende Punkt ist, es muss nur ausführlicher beschrieben werden ... "Instanz des Typs oder der Klasse" ist für Anfänger nicht gut genug ... wow, es ist wie ein Zungenbrecher und Ihr Gehirn kann sich nicht auf Zungenbrecher konzentrieren sehr gut .... das "Beispiel" Word ist sehr ärgerlich und der bloße Klang macht mich verrückt .... es bittet um mehr Details .... es bittet, besser zerbrochen zu werden. Ich musste googeln, was "Instanz" bedeutete, um mich gerade zurechtzufinden. Versuchen Sie, Ihrer Oma "Klasseninstanz" zu sagen ... yikes!

1
Whattheheck

Die wörtliche Bedeutung von Instanz ist "ein Beispiel oder einmaliges Vorkommen von etwas". Das ist sehr viel näher an der Instanz in der Java-Terminologie.

Java folgt dem dynamischen Laden, was nicht der Sprache C entspricht, bei der der gesamte Code zur Laufzeit in den RAM kopiert wird. Lassen Sie uns dies mit einem Beispiel erfassen.

   class A
    {
    int x=0;
    public static void main(String [] args)    
     {
    int y=0;
    y=y+1;
    x=x+1;
     }   

    }

Lassen Sie uns diesen Code kompilieren und ausführen.

schritt 1: Javac A.class (es wird eine .class-Datei mit Bytecode generiert) 

schritt 2: Java A (.class-Datei wird in ausführbaren Code umgewandelt)

In Schritt 2 werden die Hauptmethode und die statischen Elemente zur Ausführung in RAM geladen. Im obigen Szenario Keine Ausgabe bis zur Zeile y = y + 1. Immer wenn x = x + 1 ausgeführt wird, wird der Laufzeitfehler ausgegeben, da die JVM nicht weiß, was das x ist, das außerhalb der Hauptmethode (nicht statisch) deklariert ist.

Wenn also der Inhalt der .class-Datei im Speicher für die Ausführung der CPU verfügbar ist, gibt es kein Problem mehr. 

Dies geschieht durch Erstellen des Objekts und das Schlüsselwort NEW erledigt diesen Job.

"Das Konzept der Reservierung von Speicher im RAM für den Inhalt der Festplatte (hier .class-Datei) zur Laufzeit wird Instance genannt."

Das Objekt wird auch als Instanz der Klasse bezeichnet.

Objekte, die auchInstanzengenannt werden, sind in sich geschlossene Elemente eines Programms mit zugehörigen Merkmalen und Daten. Meist verwenden Sie die Klasse lediglich zum Erstellen von Instanzen und arbeiten dann mit diesen Instanzen. 

-Definition aus dem Buch "Sams Teach Yourself Java in 21 Tagen".

Angenommen, Sie haben 2 Klassen, die public-Klasse MainClass und public-Klasse Class_2, und Sie möchten eine Instanz von Class_2 in MainClass erstellen. 

Dies ist eine sehr einfache und grundlegende Möglichkeit, dies zu tun:

public MainClass()      /*******this is the constructor of MainClass*******/

{

 Class_2 nameyouwant = new Class_2();

}

Ich hoffe das hilft!

1
P. Soutzikevich