Cet article est
Pour ceux qui disent.
Les types et les variables sont décrits dans les articles suivants. [Connaissance de base de Java] À propos des types et des variables
Voici comment convertir une variable de type de base en une autre variable de type de base.
Type de base de source de conversion | Type de base de destination de modification pouvant être converti |
---|---|
char | int, long, float, double |
byte | short, int, long, float, double |
short | int, long, float, double |
int | long, float, double |
long | float, double |
float | double |
double | Aucun |
Le type de données entier est
byte < short < int < long
C'est une sensation de taille.
Lors de la conversion d'un petit type à un grand type, il y a ** lorsque le type est converti automatiquement ** et ** un cast où le programmeur convertit intentionnellement.
Lorsque le type est converti automatiquement
byte a = 127;
short b = a;
System.out.println(b);//Résultat de sortie = 127
short c = 32767;
long d = c;
System.out.println(d);//Résultat de sortie = 32767
Cast que le programmeur transforme intentionnellement
byte a = 127;
byte b = 127;
System.out.println((long)a + b);//Résultat de sortie = 254
int c = 2147483647;
int d = 2147483647;
System.out.println((long)c + d);//Résultat de sortie = 4294967294
Soyez prudent lors de la conversion de types grands à petits.
J'obtiens une erreur si je fais ce qui suit.
long a = Long.MAX_VALUE;//Remplacer la valeur maximale de long
System.out.println(a);//Résultat de sortie = 9223372036854775807
short b = a;//Type mismatch: cannot convert from long to short
Il existe un moyen de corriger l'erreur, mais le contenu de la variable changera. Si la taille dépasse la taille que le type de données peut avoir, les données seront tronquées (débordement de données) et le résultat d'exécution attendu ne sera pas obtenu.
long a = Long.MAX_VALUE;//Remplacer la valeur maximale de long
System.out.println(a);//Résultat de sortie = 9223372036854775807
short b = (short) a;//Conversion de type par distribution
System.out.println(b);//Résultat de sortie =-1
Cette fois, je n'expliquerai que la conversion de type des types de classe. La figure ci-dessous montre le type de référence de destination de conversion et les règles de conversion de type lorsque le type de référence de source de conversion est un type de classe.
Type de référence de la destination de conversion | Règles de conversion de type |
---|---|
Type de classe | 変換先のType de classeが変換元のType de classeのスーパークラスであること。 |
Type d'interface | 変換先のType d'interfaceのインタフェースを変換元のクラス型のクラスが実装していること。 |
Type de tableau | La conversion de type n'est pas possible. |
** Conversion de type implicite de type de référence ** Variable de type de classe parent = nouvelle classe enfant ();
//Classe parent
class Oya {
void greet() {
String a = "Bonjour";
System.out.println(a);
}
}
//Classe enfant qui hérite de la classe parent
class Kodomo extends Oya {
void name() {
String b = "Iniesta";
System.out.println(b);
}
public static void main(String[] args) {
Oya oy = new Kodomo();
oy.greet();//Résultat de sortie = bonjour
Oya oy2 = new Oya();
oy2.greet();//Résultat de sortie = bonjour
Kodomo ko = new Kodomo();
ko.greet();//Résultat de sortie = bonjour
ko.name();//Résultat de sortie = Iniesta
Kodomo ko2 = new Oya();//Erreur: incompatibilité de type: cannot convert from Oya to Kodomo
}
}
Comme vous pouvez le voir dans l'erreur Variable de type de classe enfant = nouvelle classe parent (); Vous ne pouvez pas.
Il est possible de convertir tous les types en types de caractères.
Integer a1 = 123;
String s1 = "Ah" + a1;
System.out.println(s1);//Résultat de sortie = A 123
System.out.println(s1 instanceof String);//Résultat de sortie = vrai
int a2 = -123;
String s2 = String.valueOf(a2);
System.out.println(s2);//Résultat de sortie =-123
System.out.println(s2 instanceof String);//Résultat de sortie = vrai
Je n'ai pas une compréhension approfondie de la conversion de type de référence, Je l'ajouterai dès que je l'aurai compris.
Alors merci ☕️
Recommended Posts