Dieser Artikel ist
Für diejenigen, die sagen.
Die Typen und Variablen werden in den folgenden Artikeln beschrieben. [Grundkenntnisse in Java] Informationen zu Typen und Variablen
Hier erfahren Sie, wie Sie von einer Basistypvariablen in eine andere Basistypvariable konvertieren.
Grundtyp der Konvertierungsquelle | Grundtyp des Änderungsziels, das typkonvertiert werden kann |
---|---|
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 | Keiner |
Der ganzzahlige Datentyp ist
byte < short < int < long
Es ist ein Gefühl von Größe.
Bei der Konvertierung von einem kleinen Typ in einen großen Typ gibt es ** wenn der Typ automatisch konvertiert wird ** und ** eine Umwandlung, bei der der Programmierer absichtlich konvertiert.
Wenn der Typ automatisch konvertiert wird
byte a = 127;
short b = a;
System.out.println(b);//Ausgabeergebnis = 127
short c = 32767;
long d = c;
System.out.println(d);//Ausgabeergebnis = 32767
Cast, dass der Programmierer absichtlich transformiert
byte a = 127;
byte b = 127;
System.out.println((long)a + b);//Ausgabeergebnis = 254
int c = 2147483647;
int d = 2147483647;
System.out.println((long)c + d);//Ausgabeergebnis = 4294967294
Seien Sie vorsichtig, wenn Sie von großen zu kleinen Typen konvertieren.
Ich erhalte eine Fehlermeldung, wenn ich Folgendes tue.
long a = Long.MAX_VALUE;//Ersetzen des Maximalwerts von long
System.out.println(a);//Ausgabeergebnis = 9223372036854775807
short b = a;//Type mismatch: cannot convert from long to short
Es gibt eine Möglichkeit, den Fehler zu beheben, aber der Inhalt der Variablen ändert sich. Wenn die Größe die Größe überschreitet, die der Datentyp haben kann, werden die Daten abgeschnitten (Datenüberlauf) und das erwartete Ausführungsergebnis wird nicht erhalten.
long a = Long.MAX_VALUE;//Ersetzen des Maximalwerts von long
System.out.println(a);//Ausgabeergebnis = 9223372036854775807
short b = (short) a;//Typkonvertierung durch Besetzung
System.out.println(b);//Ausgabeergebnis =-1
Dieses Mal werde ich nur die Typkonvertierung von Klassentypen erläutern. Die folgende Abbildung zeigt den Konvertierungszielreferenztyp und die Typkonvertierungsregeln, wenn der Konvertierungsquellenreferenztyp ein Klassentyp ist.
Referenztyp des Konvertierungsziels | Typkonvertierungsregeln |
---|---|
Klassentyp | 変換先のKlassentypが変換元のKlassentypのスーパークラスであること。 |
Oberflächentyp | 変換先のOberflächentypのインタフェースを変換元のクラス型のクラスが実装していること。 |
Array-Typ | Typkonvertierung ist nicht möglich. |
** Implizite Typkonvertierung des Referenztyps ** Übergeordnete Klassentypvariable = neue untergeordnete Klasse ();
//Übergeordnete Klasse
class Oya {
void greet() {
String a = "Guten Morgen";
System.out.println(a);
}
}
//Untergeordnete Klasse, die die übergeordnete Klasse erbt
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();//Ausgabeergebnis = guten Morgen
Oya oy2 = new Oya();
oy2.greet();//Ausgabeergebnis = guten Morgen
Kodomo ko = new Kodomo();
ko.greet();//Ausgabeergebnis = guten Morgen
ko.name();//Ausgabeergebnis = Iniesta
Kodomo ko2 = new Oya();//Fehler: Typ stimmt nicht überein: cannot convert from Oya to Kodomo
}
}
Wie Sie im Fehler sehen können Untergeordnete Klassentypvariable = neue übergeordnete Klasse (); Du kannst nicht.
Es ist möglich, von allen Typen in Zeichentypen zu konvertieren.
Integer a1 = 123;
String s1 = "Ah" + a1;
System.out.println(s1);//Ausgabeergebnis = A 123
System.out.println(s1 instanceof String);//Ausgabeergebnis = true
int a2 = -123;
String s2 = String.valueOf(a2);
System.out.println(s2);//Ausgabeergebnis =-123
System.out.println(s2 instanceof String);//Ausgabeergebnis = true
Ich habe also kein tiefes Verständnis für die Konvertierung von Referenztypen Ich werde es hinzufügen, sobald ich es verstehe.
Dann danke ☕️
Recommended Posts