[Java Bronze] 5 problèmes à garder à l'esprit

introduction

J'ai récemment passé l'examen JavaBronze SE 7/8. Je présenterai les problèmes qui me préoccupaient personnellement pendant mes études.

1ère question. Compatibilité entre le type int et le type char

public class Q1 {

	public static void main(String[] args) {
		char chr = 65;
		int num = 'A';
		Q1 q1 = new Q1();
		q1.func1(chr, num);
	}

	void func1(char chr, int num) {
		System.out.println("chr:" + chr);
		System.out.println("num:" + num);
	}
}

Quelles sont les conséquences de la compilation de ce code? S'il vous plait sélectionner en un.

A. chr: A
num: 65
B. Une erreur de compilation se produit
C. Une erreur d'exécution se produit
D. Rien ne s'affiche

Commentaire

Les types primitifs int et char sont compatibles et permettent une conversion implicite. Lorsque vous affectez le type int à une variable de type char, le caractère correspondant à la table de codes ASCII est affecté. Inversement, si vous affectez le type char à une variable de type int, le nombre décimal correspondant à ce caractère sera attribué.

Bonne réponse: A

2ème question. Opérateur d'incrémentation et opérateur de décrémentation

public class Q2 {

	public static void main(String[] args) {
		int num = 1;
		System.out.print(++num + num++ + --num + num--);
	}
}

Quelles sont les conséquences de la compilation de ce code? S'il vous plait sélectionner en un.

A.4
B.6
C.7
D.8

Commentaire

++ num est calculé comme 2, num ++ est calculé comme 2, --num est calculé comme 2 et num-- est calculé comme 2, pour un total de 8. Il convient de noter que num ++ est calculé comme 2 puis incrémenté à 3 Peu de temps après, il est sur le point d'être décrémenté de --num à 2. Si la même variable est sur le côté droit, les opérateurs d'incrémentation et de décrémentation postfixés refléteront le traitement de cette variable.

Bonne réponse: D

3ème question. Boucle infinie et erreur d'exécution

public class Q3 {

	public static void main(String[] args) {
		char[] chr = { 'A', 'B', 'C' };
		while (true)
			for (int i = 0; i <= chr.length; i++)
				System.out.println(chr[i]);
	}
}

Quelles sont les conséquences de la compilation de ce code? S'il vous plait sélectionner en un.

A. L'exécution se termine normalement
B. Une boucle infinie se produit
C. Une erreur de compilation se produit
D. Une erreur d'exécution se produit

Commentaire

Une boucle infinie se produit dans l'instruction while et une erreur d'exécution (ArrayIndexOutOfBoundsException) se produit dans l'instruction for. Toutefois, lorsqu'une erreur d'exécution se produit dans l'instruction for, même si elle est au milieu du traitement en cours Le processus est arrêté à mi-chemin et est généré comme une erreur d'exécution. Si ceux-ci se produisent en même temps, la possibilité qu'ils se produisent dans l'ordre suivant sera déterminée.

  1. Erreur de compilation
  2. Erreur d'exécution
  3. Boucle infinie
  4. Exécution réussie

Bonne réponse: D

4e question. Remplacer la relation

class Super {
	static void func(String str) {
	}
}
class Sub extends Super {
	String str;
	void func(String str) {
		this.str = str;
	}
	void print() {
		System.out.println(str);
	}
}
public class Q4 {
	public static void main(String[] args) {
		Sub sub = new Sub();
		sub.func("Hello World");
		sub.print();
	}
}

Quelles sont les conséquences de la compilation de ce code? S'il vous plait sélectionner en un.

A. Hello World
B. Une erreur de compilation se produit
C. Une erreur d'exécution se produit
D. Rien ne s'affiche

Commentaire

La méthode func de la classe Super a été remplacée par la méthode func de la classe Sub, mais comme elle est qualifiée statiquement, une erreur de compilation se produira. Il est important de noter que le problème est que vous ne remarquez pas l'erreur lorsque vous tracez la méthode principale. Nous devons nous concentrer sur les méthodes liées aux remplacements de superclasses et de sous-classes, et non sur le traitement de la méthode principale.

Bonne réponse: B

Cinquième question. Type de classe

class Super {
	void print() {
		System.out.println("Hello World");
	}
}

class Sub extends Super {
}

public class Q5 {
	public static void main(String[] args) {
		Sub sub;
		Super spr;
		sub = new Sub();
		spr = sub;
		sub = spr;
		sub.print();
	}
}

Quelles sont les conséquences de la compilation de ce code? S'il vous plait sélectionner en un.

A. Hello World
B. Une erreur de compilation se produit
C. Une erreur d'exécution se produit
D. Rien ne s'affiche

Commentaire

Aucune erreur ne se produit sur la ligne spr = sub; qui affecte le type de sous-classe → type de superclasse. Une erreur de compilation se produit sur la ligne sub = spr; qui affecte le type de superclasse → type de sous-classe.

Pour les types de données de base, une conversion explicite est requise lors de l'affectation d'une grande variable à une petite variable.

Exemple)
double double_01 = 100.0;
int int_01 = double_01;      //Distribution implicite(Erreur se produit)
int int_01 = (int)double_01;     //Distribution explicite(Aucune erreur ne se produit)

Ensuite, dans le cas d'un type de classe, une erreur ne se produit-elle pas même si elle est affectée à un type de sous-classe qui est un type grand (super classe + classe de différence) → une super classe qui est un petit type (super classe uniquement), et vice versa?

La raison en est que le compilateur vérifie la compilation de la compatibilité des types pour déterminer s'il s'agit d'une erreur. Dans le cas des données de base, la compatibilité est jugée par la taille du type, mais dans le cas du type de classe, elle est jugée en regardant le contenu de la classe.

La sous-classe dit de quelle superclasse elle hérite, mais la superclasse ne dit pas de quelle sous-classe elle hérite.

Par conséquent, si vous affectez une superclasse à une sous-classe, vous n'obtiendrez pas d'erreur car vous connaissez la compatibilité, mais si vous affectez une sous-classe à une superclasse, vous ne connaîtrez pas la compatibilité, donc si vous ne la castez pas explicitement, vous obtiendrez une erreur de compilation. Ce sera.

Bonne réponse: B

en conclusion

Qu'as-tu pensé. C'est parfait pour la préparation aux examens! !! !! Peut-être \ _ (: 3 "∠) \ _

Recommended Posts

[Java Bronze] 5 problèmes à garder à l'esprit
Gardons cela à l'esprit Quoi de neuf dans Java 9
Points à garder à l'esprit lorsque vous vous engagez dans CRuby
Points à noter lors de l'ajout de la guerre à la dépendance
Points à garder à l'esprit lors de l'utilisation de l'instruction if
Points à garder à l'esprit lors du test de méthodes privées dans JUnit
Multithread pour s'adapter au modèle [Java]
Comment apprendre JAVA en 7 jours
Enregistrer la sortie dans un fichier en Java
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Essayez d'implémenter Yuma en Java
Comment concaténer des chaînes avec Java
Comment implémenter le filtre de Kalman par Java
Essayez de résoudre Project Euler en Java
Facile à créer Slack Bot avec Java
Référence Java à comprendre dans la figure
Essayez d'implémenter l'ajout n-aire en Java
Remplacez List <Optional <T >> par Optional <List <T >> en Java
Convertir des fichiers SVG en fichiers PNG en Java
Comment intégrer Janus Graph dans Java
Comment obtenir la date avec Java
Ajouter des notes de bas de page aux documents Word en Java
Exemple pour décompresser le fichier gz en Java
De Java à C et de C à Java dans Android Studio
Ajouter l'attribut SameSite au cookie en Java
Points à garder à l'esprit lors de l'utilisation d'Apache PDFBox® avec AWS Lambda
Configurez une interface graphique Java dans un thread séparé pour conserver le
Deux façons de démarrer un thread en Java + @
Partition en Java
Je souhaite envoyer un e-mail en Java.
CORBA semble avoir été supprimé dans Java SE 11. .. ..
Code pour échapper aux chaînes JSON en Java
Essayez de créer un babillard en Java
Changements dans Java 11
Définir le délai d'attente HTTP Keep Alive dans le client HTTP Java
Janken à Java
Comment obtenir une classe depuis Element en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Comment masquer les champs nuls en réponse en Java
Bibliothèque "OSHI" pour acquérir des informations système avec Java
[Java] Introduction à Java
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
Introduction à Java
Comment résoudre les problèmes d'expression en Java
J'ai essayé de créer une compétence Alexa avec Java
Taux circonférentiel à Java
Comment écrire Java String # getBytes dans Kotlin?
FizzBuzz en Java
Points à connaître avec Java Equals
N choses à garder à l'esprit lorsque vous lisez «Introduction au printemps» et «Introduction au printemps» à l'ère Reiwa
Comment créer un environnement Java en seulement 3 secondes
[Java] Comment omettre le constructeur privé dans Lombok
Exemple de code pour convertir List en List <String> dans Java Stream
Je veux faire quelque chose comme "cls" en Java
J'ai essayé d'implémenter la notification push Firebase en Java
Comment entrer / sortir des fichiers mainframe IBM en Java?
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.