-2
public class MainClass
{
private String name="";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args)
{
ArrayList<String> al=new ArrayList<String>();
String str=new String("abc");
al.add(str);
str="def";
al.add(str);
str="ghi";
al.add(str);
str="jkl";
al.add(str);
System.out.println(al);
ArrayList<MainClass> al1=new ArrayList<MainClass>();
MainClass mainclass=new MainClass();
mainclass.setName("Abhi");
al1.add(mainclass);
mainclass.setName("Sajith");
al1.add(mainclass);
mainclass.setName("Sridhar");
al1.add(mainclass);
for(MainClass main:al1)
System.out.println(main.getName());
}
}
Ausgang:Wie funktionieren die Objekte in diesem Code?
[abc, def, ghi, jkl]
Sridhar
Sridhar
Sridhar
Warum mein Objekt in der zweiten Fall überwiegende bekommen, wenn es nicht in ersten Fall geschieht?
Sie erstellen immer nur ein 'neues MainClass();' - Objekt, so dass Sie erwarten, dass Sie dieses ein Objekt setzen, wenn Sie es mit drei verschiedenen Werten einstellen. Sie sollten in der Lage sein, den Code in Ihrem Debugger zu durchlaufen, um genau zu verstehen, was passiert. –
Ob Sie 'new String' verwenden oder ein String-Literal verwenden, Sie haben vier verschiedene Strings im ersten Fall. Wenn Sie also diese Referenzen hinzufügen, haben Sie immer noch 4 verschiedene Strings. –
Beachten Sie, dass ArrayList al = neue ArrayList (); ist dasselbe wie ArrayList al = new ArrayList <>(); und schlechte Übung zu String str = new String ("abc"); aber string str = "abc"; –
Tokazio