Wie JVM die Erstellung von Objekt A in jeder Schleife verarbeitet? Wie unterscheidet sich "list" zwischen verschiedenen Instanzen? Es empfiehlt sich, bei jeder Iteration ein Objekt zu erstellen. Wenn nein, was ist die beste Lösung für das Hinzufügen eines Objekts zu einer Liste?Wie behandelt jvm das Erstellen von Objekten innerhalb einer Schleife?
Antwort
In Ihrem Beispiel wird bei jeder Iteration der Schleife ein neues Objekt erstellt. Die Liste der Lage ist, zwischen ihnen zu unterscheiden, weil es nicht, dass Sie alle nennen sie schert „a“ in Ihrem Code, es Spur von ihnen durch die Referenz hält, die jedes Mal, wenn Sie
a = new A();
Jedes Mal, rufen Sie erneut zugewiesen werden, dass Die Codezeile wird aufgerufen, ein neues Objekt wird auf dem Heap erstellt und die Adresse im Speicher wird der Referenz a zugewiesen. Es ist diese Referenz, die in der Liste aufgezeichnet wird, nicht der Variablenname.
Dies ist eine vollkommen schöne und normale Art, eine Liste zu füllen (abgesehen von den Syntaxfehlern, die andere erwähnt haben, von denen ich annehme, dass Sie sie reparieren können, wenn Sie versuchen, Ihren Code zu kompilieren).
Liste enthält einen Verweis auf jede Instanz eines Objekts, das erstellt wird. Es ist in Ordnung, jedes Objekt innerhalb der Schleife zu erstellen (ich gehe davon aus, dass Sie meinen, dass Sie die Variable 'a' außerhalb der Schleife deklarieren und sie dann jeder Iteration neu zuweisen).
Ja. Du hast Recht. Einer meiner Freunde hat mir gesagt, dass es nicht gut ist, so viele Instanzen zu erstellen. Es kann die Leistung der Anwendung verringern. – Shashi
@Shashi Bhushan: Sofern Sie nicht alle Instanzen benötigen, natürlich, in diesem Fall ist es sinnvoll, sie zu erstellen. :) – Eddie
@Shashi jedoch ist das Erstellen mehrerer Instanzen vollkommen in Ordnung. – jrharshath
Ist es eine gute Vorgehensweise, bei jeder Iteration ein neues Objekt zu erstellen? Einer meiner Freunde sagte mir, dass es nicht gut ist, so viele Instanzen zu erstellen.
Wenn Sie verschiedene einzelne Instanzen benötigen, müssen Sie sie erstellen. Da Ihre Liste fünf Objekte mit jeweils unterschiedlichen Namen benötigt (ram, mohan, anil usw.), benötigen Sie für jede Iteration der Schleife ein neues Objekt. Wie sonst werden Sie die fünf Namen speichern?
Wie für die Variable a
außerhalb der Schleife zu deklarieren, glaube ich nicht, dass dies einen Unterschied macht Leistung und reduziert auch die Lesbarkeit.
A a; // dont do this
for(int i =0; i < test.length; i++){
a = new A();
a.setName(test[i]);
list.add(a);
}
Sie könnten in dem foreach-Schleife
for(String name: test){
A a = new A();
a.setName(name);
list.add(a);
}
interessiert sein, wenn mein Verständnis der JVM korrekt ist, muss der gepostete Code keinen Unterschied in der Leistung im Vergleich zu
for (String name : test)
{
list.add(new A(name));
}
(vorausgesetzt natürlich, dass der Konstruktor A (String s) eine andere Möglichkeit ist, eine neue Instanz mit einem bestimmten Namen zu erstellen)
- 1. Wie vermeidet man das Erstellen einer Funktion innerhalb einer Schleife?
- 2. CasperJS - wie behandelt man einen 'Klick' innerhalb einer Schleife?
- 3. Erstellen von mehreren FileWriter-Objekten in einer Schleife
- 4. Lenker.js Schleife innerhalb einer Schleife
- 5. Wie wird systemeigener Code von der JVM behandelt
- 6. Erstellen von Objekten in Python innerhalb einer formatierten Textdatei
- 7. Erstellen Sparse Matrix innerhalb einer Schleife
- 8. erstellen ImageViews dynamisch innerhalb einer Schleife
- 9. Pause innerhalb für Schleife innerhalb der Schleife
- 10. Wie behandelt JVM doppelte JARs verschiedener Versionen
- 11. Variablenfunktionsdefinitionen innerhalb einer Schleife?
- 12. Wie Erstellen Matrizen mit unterschiedlichen Namen innerhalb einer for-Schleife
- 13. Array von Objekten innerhalb Array von Objekten
- 14. Variablendeklaration innerhalb einer Schleife
- 15. jQuery.ajax() innerhalb einer Schleife
- 16. Erstellen einer JVM aus einer JNI-Methode
- 17. Zeichenzählung innerhalb einer Schleife
- 18. Keine Funktionen innerhalb einer Schleife
- 19. Python, Erstellen von Objekten
- 20. Erstellen einer zu bestimmenden Menge von Objekten mit Loops
- 21. Http Anfrage innerhalb einer Schleife
- 22. Erstellen von Javascript-Objekten aus einer Vorlage
- 23. Erstellen einer Liste von Objekten in Python
- 24. JavaScript: While-Schleife innerhalb einer for-Schleife
- 25. CakePHP While-Schleife innerhalb einer anderen Schleife
- 26. HTML innerhalb einer JavaScript-Schleife
- 27. Erstellen Sie Pivot-Tabellen innerhalb einer for-Schleife vba
- 28. Erstellen von Objekten innerhalb eines vorhandenen Objekts in Python
- 29. Erstellen von JfreeCharts in einer for-Schleife
- 30. Schleife durch Array von Objekten
Ein kleiner Kompilierungsfehler tritt auf: Der Typ Liste kann nicht instanziiert werden. – guerda