Ich habe eine ziemlich verwirrende Klasse, in der ich nicht verstehe, warum superUser
immer gedruckt wird. Ich weiß, wenn ich private String username = "user"
geschrieben hätte, dann hätte ich es in meiner main
Methode so nennen können: System.out.println(o1.username)
. In meinem Fall würde das obige superUser auch ausdrucken, weil es statisch ist. Aber ich verstehe es nicht wirklich. Liegt es daran, dass Java den Code zuerst vollständig liest und erkennt, dass ich ein zweites Objekt o2
habe, das seinen eigenen Konstruktor hat, wo das Argument der lokalen Variablen username
zugewiesen wird?Zwei Konstruktoren und statische String-Variable
Was ich nicht verstehe ist, warum System.out.println(o1.getUsername());
superUser druckt.
public class PrintMe {
private static String username = "user";
private int password = 1234;
public PrintMe(){}
public PrintMe(String username){
PrintMe.username = username;
this.password = 5678;
}
public void changePassword(int password){
System.out.println("The old password of " + this.getUsername() +
" was " + this.password);
this.password = password;
}
public String getUsername(){
return PrintMe.username;
}
public static void main(String[] args){
PrintMe o1 = new PrintMe();
PrintMe o2 = new PrintMe("superUser");
System.out.println(o1.getUsername()); // superUser
System.out.println(o1.password); // 1234
System.out.println(o2.getUsername()); // superUser
System.out.println(o2.password); // 5678
o1.changePassword(9000); // The old password of superUser was 1234
System.out.println(o1.getUsername()); // superUser
System.out.println(o1.password); // 9000
System.out.println(o2.getUsername()); // superUser
System.out.println(o2.password); // 5678
}
}
Haben Sie [diese] besucht (https://stackoverflow.com/questions/32417953/how-does-the-static-keyword-work-in-java)? BTW, Java ist nicht schwierig;) – vinS
Nichts über Ihre Ausgabe ist unerwartet. Kannst du uns zu den genauen Zeilen führen, die dich verwirren? –