Nous avons répertorié les schémas de problèmes qui se sont trompés en raison d'erreurs trompeuses ou simples lors de la préparation de l'examen Oracle Java SE8 Silver.
Tableau
int[] nums;
nums = {1, 0}; //Compilation / exécution réussie
nums = {1.0}; //Erreur de compilation
C'est un modèle dans lequel la troisième ligne est confondue avec un point et une virgule. Il y aura un espace après la virgule, alors soyez prudent et vous ne ferez pas d'erreur.
String
String hoge = " ho ge ";
hoge.trim();
System.out.print(hoge); //"Ho ge" est sorti
Un modèle qui appelle les méthodes String (en particulier trim, replace, etc.) mais ne les réaffecte pas aux variables. L'exemple ci-dessus omet d'autres traitements, mais s'il est enterré dans d'autres opérations de chaîne de caractères, il sera ignoré de manière inattendue.
StringBuilder
public String hoge(){
StringBuilder huga = new StringBuilder("huga");
return huga.append(" huga");
}
C'est un modèle qui convertit StringBuilder en String sans autorisation dans le cerveau après avoir effectué une opération de chaîne de caractères. Il existe plusieurs choix, alors faites attention au type de retour, en particulier lorsque vous utilisez StringBuilder.
Nom de variable
class Hoge {
int a;
void huga() {
int a;
...
System.out.println(a);
}
}
Il est facile à comprendre car il peut être codé par couleur dans l'EDI, mais il est facile d'oublier l'existence de variables locales en une seule couleur. Si vous faites référence à un champ, celui-ci est joint, donc c'est facile à comprendre ...
Héritage héréditaire
abstract class A {
abstract void hoge();
}
abstract class B extends A {
void huga() {};
}
class C extends B {
}
Dans ce cas, la classe C entraînera une erreur de compilation. La cause est qu'il n'implémente pas la méthode hoge de classe A. La classe B hérite de la classe A, mais comme il s'agit d'une classe abstraite, elle ne provoque pas d'erreur même si hoge () n'est pas implémentée, La classe C est une classe concrète et doit être implémentée.
Dans le cas ci-dessus, le constructeur sans argument n'est pas généré automatiquement. Il est facile de l'oublier lorsqu'il est appelé, mais cela provoque une erreur de compilation.
ToString est appelé au moment de la concaténation de chaînes et est implicitement converti en String. Je convertis souvent explicitement, et j'ai le sentiment que je n'ai pas eu l'occasion de m'appuyer sur la conversion implicite. (Il y a un problème de combinaison du type StringBuilder et du type String avec l'opérateur +, mais sera-ce utile jour?)
Je ne savais pas qu'il n'y avait pas beaucoup de situations où vous devez spécifier la position d'insertion et vous pouvez la spécifier avec la méthode add. ~~ Je pense qu'il est plus pratique d'apprendre à lire la référence que de mémoriser les méthodes une par une. ~~
Existe-t-il un modèle qui ne devrait pas être traité en interne?
J'ai appris beaucoup de modèles que je n'ai pas abordés jusqu'à présent, mais c'est un peu subtil si cela peut être utilisé dans la pratique. Il existe de nombreux sujets tels que les anti-patterns qui fonctionnent grâce à la compilation, et j'estime qu'il est problématique pour les débutants d'apprendre des patterns tels que "composable et exécutable". Par conséquent, je pense que cet examen doit être passé après avoir compris que le but principal de cet examen est d'approfondir la compréhension de la langue et non le but de pouvoir rédiger un bon programme. ~~ Et j'ai réalisé la grandeur de l'IDE et de la référence. ~~