Ich bin neu in Java. Sie sind noch nicht zu einem Schluss gekommen? Jedoch nur um der Notiz willen,
Ich habe mich gefragt, wann ich die Kalenderklasse verwendet habe.
Die Calendar-Klasse verfügt über Getter- und Setter-Methoden, mit denen Sie Jahre, Monate, Tage, Tage usw. abrufen und zuweisen können. Zum Beispiel, wenn Sie das aktuelle Jahr erhalten möchten
import java.util.*;
class CalendarTest {
public static void main(String args[])
{
Calendar cld = Calendar.getInstance();
System.out.println("JAHR Getter Methode →"+cld.get(cld.YEAR));
}
}
Dies ist mit der Methode and getter möglich.
Ausgabe
JAHR Getter Methode → 2019
Ich habe mich hier gefragt.
** Soll ich cld.YEAR
anrufen? **Wann. Selbst wenn Sie sich die API-Referenz ansehen, ist die Zugriffskontrollebene des Felds "YEAR" öffentlich, sodass Sie sie aufrufen können (wenn sie nicht öffentlich ist, können Sie das oben genannte "cld.get (cld.YEAR)" nicht verwenden. ).
Wie auch immer, ich werde es überprüfen.
import java.util.*;
class CalendarTest {
public static void main(String args[])
{
Calendar cld = Calendar.getInstance();
System.out.println("JAHR Getter Methode →"+cld.get(cld.YEAR)+",Feld →"+cld.YEAR);
}
}
Ausgabe
JAHR Getter Methode → 2019,Feld → 1
Hmm? Es scheint, dass das Feld YEAR die Ganzzahl 1 anstelle von 2019 enthält. Es scheint, dass Sie verschiedene Spekulationen anstellen können, aber lassen Sie uns verschiedene Dinge überprüfen.
import java.util.*;
class CalendarTest {
public static void main(String args[])
{
Calendar cld = Calendar.getInstance();
for(int i = 2015; i<2020 ;i++){
cld.set(Calendar.YEAR,i);
System.out.println("YEAR("+i+")Getter-Methode →"+cld.get(cld.YEAR)+",Feld →"+cld.YEAR);
}
}
}
Ausgabe
YEAR(2015)Getter-Methode → 2015,Feld → 1
YEAR(2016)Getter-Methode → 2016,Feld → 1
YEAR(2017)Getter-Methode → 2017,Feld → 1
YEAR(2018)Getter-Methode → 2018,Feld → 1
YEAR(2019)Getter-Methode → 2019,Feld → 1
Nun, es scheint, dass das Feld "JAHR" immer eine ganze Zahl von 1 hat. Als ich die anderen Felder überprüfte, stellte ich fest, dass das Feld "MONTH" immer 2 und das Feld "DAY_OF_MONTH" immer 5 war.
Ich dachte, ich überprüfe die API-Referenz und ... Wieder wurde jedes Feld als konstant vom Typ "final" deklariert. Fehlende Bestätigung ,,
Vorerst stellte ich fest, dass ich die get-Methode verwenden muss, wie der Titel andeutet. Wird das Feld als konstante Nummer wie eine Seriennummer deklariert?
Was gibt die Getter-Methode anstelle des Feldes zurück? Ich habe das Innere der Kalenderklasse überprüft. Die Getter- und Setter-Methoden sahen so aus.
Calendar.java
class Calendar {
public int get(int field)
{
complete();
return internalGet(field);
}
protected final int internalGet(int field)
{
return fields[field];
}
final void internalSet(int field, int value)
{
fields[field] = value;
}
public void set(int field, int value)
{
if (areFieldsSet && !areAllFieldsSet) {
computeFields();
}
internalSet(field, value);
isTimeSet = false;
areFieldsSet = false;
isSet[field] = true;
stamp[field] = nextStamp++;
if (nextStamp == Integer.MAX_VALUE) {
adjustStamp();
}
}
}
Wenn man die Details ignoriert, gibt es ein konstantes Feld wie "YEAR" als Index (Index) des Arrays mit dem Namen "fields", und es fühlt sich an, als würde man dem durch das Feld angegebenen Element einen Wert zuweisen oder abrufen.
Ist es nicht in Ordnung, normalerweise einen Wert in jedes Feld einzugeben (wie "public int YEAR = 2001")? Ich konnte dieses Gefühl nicht loswerden.
Ich bin mir nicht sicher, wo die Vorteile von Getter- und Setter-Methoden liegen. (Schließlich verstehe ich die Kapselung oder Objektorientierung nicht.
Es scheint jedoch einfach zu handhaben, dass jedes Element keine eigenen Elemente hat, sondern wie {[Jahr], [Monat], [Tag], ...} in einem Array zusammengefasst ist. Ich habe es gefühlt ^^
Wenn ich Java studiere, weiß ich nicht, wie es geht, und es ist schwierig, Fortschritte zu erzielen ...
Recommended Posts