Wir haben die Muster von Problemen aufgelistet, die aufgrund irreführender oder einfacher Fehler bei der Vorbereitung auf die Oracle Java SE8 Silver-Prüfung falsch waren.
Array
int[] nums;
nums = {1, 0}; //Erfolgreiche Kompilierung / Ausführung
nums = {1.0}; //Kompilierungsfehler
Es ist ein Muster, bei dem die dritte Zeile mit einem Punkt und einem Komma verwechselt wird. Nach dem Komma wird ein Leerzeichen eingefügt. Seien Sie also vorsichtig und machen Sie keinen Fehler.
String
String hoge = " ho ge ";
hoge.trim();
System.out.print(hoge); //"Ho ge" wird ausgegeben
Ein Muster, das String-Methoden (insbesondere Trimmen, Ersetzen usw.) aufruft, diese jedoch nicht Variablen zuweist. Das obige Beispiel lässt eine andere Verarbeitung aus, aber wenn es in anderen Zeichenfolgenoperationen vergraben ist, wird es unerwartet übersehen.
StringBuilder
public String hoge(){
StringBuilder huga = new StringBuilder("huga");
return huga.append(" huga");
}
Es ist ein Muster, das StringBuilder nach einer Zeichenfolgenoperation ohne Erlaubnis im Gehirn in String umwandelt. Es gibt mehrere Möglichkeiten. Seien Sie also vorsichtig mit dem Rückgabetyp, insbesondere wenn Sie StringBuilder verwenden.
Variablennamen
class Hoge {
int a;
void huga() {
int a;
...
System.out.println(a);
}
}
Es ist leicht zu verstehen, da es in IDE farbcodiert werden kann, aber es ist leicht zu vergessen, dass lokale Variablen in einer einzigen Farbe vorhanden sind. Wenn Sie sich auf ein Feld beziehen, ist dieses angehängt, sodass es leicht zu verstehen ist ...
Vererbung Vererbung
abstract class A {
abstract void hoge();
}
abstract class B extends A {
void huga() {};
}
class C extends B {
}
In diesem Fall führt Klasse C zu einem Kompilierungsfehler. Die Ursache ist, dass das Klasse-A-Methoden-Hoge nicht implementiert wird. Klasse B erbt von Klasse A, aber da es sich um eine abstrakte Klasse handelt, verursacht sie keinen Fehler, selbst wenn hoge () nicht implementiert ist. Klasse C ist eine konkrete Klasse und muss implementiert werden.
Im obigen Fall wird der Konstruktor ohne Argumente nicht automatisch generiert. Es ist leicht zu übersehen, wenn es aufgerufen wird, aber es verursacht einen Kompilierungsfehler.
ToString wird zum Zeitpunkt der Verkettung von Zeichenfolgen aufgerufen und implizit in Zeichenfolgen konvertiert. Ich konvertiere oft explizit und habe das Gefühl, dass ich nicht die Möglichkeit hatte, mich auf implizite Konvertierungen zu verlassen. (Es gibt ein Problem beim Kombinieren des StringBuilder-Typs und des String-Typs mit dem Operator +, aber wird es ein nützlicher Tag sein?)
Ich wusste nicht, dass es nicht viele Situationen gibt, in denen Sie die Einfügeposition angeben müssen und Sie sie mit der add-Methode angeben können. ~~ Ich denke, es ist praktischer zu lernen, wie man die Referenz liest, als sich die Methoden einzeln zu merken. ~~
Gibt es ein Muster, das nicht intern verarbeitet werden sollte?
Ich habe viele Muster gelernt, die ich bis jetzt noch nicht angesprochen habe, aber es ist ein wenig subtil, wenn sie in der Praxis verwendet werden können. Es gibt viele Themen wie Anti-Patterns, die durch Kompilierung funktionieren, und ich halte es für problematisch für Anfänger, solche Muster wie "kompilierbar und ausführbar" zu lernen. Daher denke ich, dass diese Prüfung abgelegt werden sollte, nachdem verstanden wurde, dass der Hauptzweck dieser Prüfung darin besteht, das Verständnis der Sprache zu vertiefen und nicht in der Lage zu sein, ein gutes Programm zu schreiben. ~~ Und ich erkannte die Größe von IDE und Referenz. ~~