【发布时间】:2017-12-16 10:22:33
【问题描述】:
我有一个相当混乱的课程,我不明白为什么总是打印superUser。我知道如果我写了private String username = "user",那么我就可以在我的main 方法中调用它:System.out.println(o1.username)。在我的情况下,上面也会打印出超级用户,因为它是静态的。但我真的不明白..是不是因为Java首先完全读取代码并意识到我有第二个对象o2,它有自己的构造函数,其中参数分配给局部变量username?
我不明白为什么System.out.println(o1.getUsername()); 会打印超级用户。
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
}
}
【问题讨论】:
-
你访问过this吗?顺便说一句,Java 并不难 ;)
-
您的输出没有什么是意外的。您能指导我们找到让您感到困惑的确切行吗?
标签: java methods constructor