Questo è un esempio su cui stavo lavorando dal mio tutorial di java. Ho una classe Time1 che non ha un costruttore e quindi mi aspettavo che fosse inizializzata con i valori predefiniti su int, che è zero.Valore predefinito Java delle variabili di istanza di una classe non inizializzata a zero per int
public class Time1 {
private int hour; // expected to be initialised with zero
private int minute; // expected to be initialised with zero
private int second; // expected to be initialised with zero
public void setTime(int hour, int minute, int second) {
if (hour < 0 || hour >= 24 || minute < 0 || minute >= 60 || second < 0 || second >= 60) {
throw new IllegalArgumentException("value out of range");
}
this.hour = hour;
this.minute = minute;
this.second = second;
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", hour, minute, second);
}
public String toString() {
return String.format("%d:%02d:%02d %s", ((hour == 0 || hour == 12) ? 12 : hour % 12), minute, second, (hour < 12 ? "AM" : "PM"));
}
}
e ora ho la classe principale
public class Time1test {
public static void main(String[] args) {
Time1 thistime = new Time1();
System.out.println(thistime);
thistime.setTime(13, 22, 33);
System.out.println(thistime);
}
}
mi aspettavo System.out.println(thistime);
prima di utilizzare il metodo setTime()
di tornare 00:00:00 perché non ho usato tutti i metodi per riformattare esso, tuttavia Sto ottenendo l'uscita come 12:00 AM, che equivale a chiamare il metodo toString()
. Perché questo metodo è stato chiamato di default quando un nuovo oggetto è inizializzato, anche senza essere chiamato?
Perché ti aspettavi '00: 00: 00'? Ti aspettavi che Java chiamasse automaticamente 'toUniversalString'? – user2357112
Fondamentalmente, quando si passa un 'Object' per stampare, come questo:' System.out.println (Object) ', fa davvero' System.out.println (Object.toString()) ' – Zizouz212
@ user2357112, I non era a conoscenza di quale metodo viene chiamato e perché/come, e quindi questa domanda. E grazie Zizouz212 – scott