Wie viele Objekte der Klasse User werden insgesamt in Arbeitsspeicher durch main-Methode erzeugt?
Hallo,
bei dieser Fragestellung komme ich nicht weiter. Kann mir jemand sagen, wie man es lösen müsste?
Die Fragestellung lautet:
Wie viele Objekte der Klasse User werden insgesamt in Arbeitsspeicher durch main-Methode erzeugt?
public class User{
private String name;
private User[] friends;
private int numFriends;
public User() {
friends = new User[100];
}
public User(String name) {
this();
this.name = name;
}
public void addFriend(User u){
if (numFriends < friends.length){
friends[numFriends] = u;
++numFriends;
}
}
public void addFriend(String name){
addFriend(new User(name));
}
}
-------------------------------------------------------------------
public class Facebook{
public static void main(String[] args){
User alex = new User("Alex");
alex.addFriend(new User("Friedrich"));
alex.addFriend("Wilhelm");
User lena = new User();
lena.addFriend("Alex");
}
}
Die Antwortmöglichkeiten sind:
- 5
- 3
- 2
- 4
Kann mir bitte jemand helfen?
1 Antwort
Der new-Operator erzeugt stets ein neues Objekt im Heap. Ein versteckter Sonderfall ist - das nur als Randinformation - das String-Literal. Bei diesem schaut das Programm erst in einen internen String-Pool, ob ein String mit der Zeichenkette bereits existiert. Wenn nicht, wird ein neues String-Objekt mit der Zeichenkette angelegt und im String-Pool abgelegt.
String word1 = "Hello";
String word2 = "Hello"; // word2 == word1
String word3 = new String("Hello"); // word3 != word1
Für deine Aufgabe reicht es aus, Zeile für Zeile der main-Methode durchzugehen und zu schauen, ob sie eine Anweisung triggert, die den new-Operator in Kombination mit dem User-Konstruktor verwendet.
Mit jedem Aufruf der Methode wird ein Nutzer erstellt. Also sind es letzen Endes 5.
Gibt es also 3 Objekte, da es 3 mal new gibt?