다소 혼란스러운 클래스가 있는데, 왜 superUser
이 항상 인쇄되고 있는지 이해할 수 없습니다. 나는 만약 내가 private String username = "user"
라고 쓰면, System.out.println(o1.username)
과 같은 나의 main
메쏘드에서 그것을 부를 수 있었을 것이라는 것을 안다. 필자의 경우 위의 코드는 정적이기 때문에 superuser를 출력합니다. 하지만 실제로 그것을 얻지는 않습니다. 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] (https://stackoverflow.com/questions/32417953/how-does-the-static-keyword-work-in-java)를 방문하셨습니까? BTW, Java는 어렵지 않습니다.) – vinS
출력에 대해 아무 것도 예기치 않습니다. 당신을 혼란스럽게하는 정확한 라인으로 안내 할 수 있습니까? –