Diesmal "** Cast **"!
Casting wird auch als Typkonvertierung bezeichnet und ist der Prozess der Konvertierung von Typen (int, byte, double usw.).
Int-Typ in Byte-Typ konvertieren! Konvertieren Sie Double Type in Int Type! Konvertieren Sie kurzen Typ in langen Typ!
etc... ~~ Da diese Art der Verarbeitung irgendwann notwendig sein wird, werde ich so schnell wie möglich einen Artikel als Grundbestandteil schreiben ~~ ~~ Und der Objekttyp wird weggelassen ... ~~
Lass uns diese Besetzung studieren!
Der Grund, warum die Besetzung überhaupt notwendig ist, ist ...
Beispiel: Zuweisen des Werts einer Variablen vom Typ Byte zu einer Variablen vom Typ int "** can **" Dies liegt daran, dass Byte-Typ und Int-Typ ähnliche Typen sind, der Byte-Typ klein und der Int-Typ groß ist.
Folgendes passiert, wenn Sie das obige Beispiel verwenden.
Main.java
public class Main {
public static void main(String[] args) {
//Bytetypdeklaration
byte b = 100;
//int Typdeklaration
int i = b; //int ← Bytesubstitution
}
}
Kann normal zugewiesen werden
Im Gegenteil, wenn Sie vom Typ int dem Bytetyp zuweisen, passiert ein Fehler!
Der Grund für den Fehler ist, dass der int-Typ nicht mehr in den Bytetyp als in den Bytetyp passen kann.
Main.java
public class Main {
public static void main(String[] args) {
//int Typdeklaration
int i = 100;
//Bytetypdeklaration
byte b = i; //Byte ← int Fehler tritt auf
}
}
Wenn Sie versuchen, einer Ganzzahl wie dem Typ int einen Wert vom Typ double oder float zuzuweisen, wird weiterhin eine Fehlermeldung angezeigt. Der Integer-Typ enthält nichts nach dem Dezimalpunkt, oder? Da der Bereich, der ausgedrückt werden kann, unterschiedlich ist, wird ein verärgerter Fehler angezeigt, der "Match the type!" Sagt.
Aber das ist es! Ich muss wirklich besetzen! Wenn du einen ** starken Willen ** brauchst, musst du "** cast **" verwenden.
** Casting ist eine unvernünftige Typkonvertierung, daher wird es nicht empfohlen und sollte nicht missbraucht werden. ** ** **
Wie schreibe ich die Besetzung? Schreiben Sie (Typ) vor die Variable. Bitte geben Sie den Typ ein, den Sie konvertieren möchten.
Mit dem vorherigen Fehler
byte b = i;
Umschreiben
byte b = (byte)i;
OK! !!
Main.java
public class Main {
public static void main(String[] args) {
//int Typdeklaration
int i = 100;
//Bytetypdeklaration
byte b = (byte)i; //byte ← int Es tritt kein Fehler auf, weil ich ihn gewirkt habe! !! !!
}
}
Da der Typ zwangsweise geändert wird, gibt es einen Nebeneffekt, wenn Sie den Doppeltyp in den Typ int umwandeln, dass nur der Wert des ganzzahligen Teils zugewiesen wird. Seien Sie also vorsichtig! Dann möchte ich die Situation tatsächlich sehen.
Main.java
public class Main {
public static void main(String[] args) {
//Doppelte Typdeklaration&Initialisieren
double doubleNumber = 15.88d;
//int Typdeklaration
int intNum;
//In int-Typ umwandeln&Auswechslung
intNum = (int) doubleNumber;
//Zeigen Sie den Wert nach dem Casting an
System.out.println(intNum); //intNum ist eine ganze Zahl von 15
}
}
Beim Umwandeln eines Doppeltyps in einen Int-Typ wird die .88d von 15.88d eliminiert und nur 15 werden intNum zugewiesen.
Es gibt viele andere Nebenwirkungen, seien Sie also vorsichtig ... (Horrorstil)
Es gibt zwei Arten von Abgüssen.
Der Unterschied zwischen diesen beiden ist
--Wenn es kein Problem gibt, auch wenn das erstere nicht explizit besetzt wird
Es ist geworden.
Zuvor eingeführt "[Primitiver Typ](https://qiita.com/koukonko/items/e2714f404b9e369b01b7#21-%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86" % E3% 82% A3% E3% 83% 96% E5% 9E% 8B) ”Zuweisungen von oben nach unten müssen nicht explizit umgewandelt werden, Zuweisungen von unten nach oben sind jedoch explizit. Muss gegossen werden.
Im Moment ist hier eine einfache Tabelle, die sich auf numerische Werte bezieht.
Schimmel | Box Bereich |
---|---|
byte | -128 ~ 127 |
short | -32768 ~ 32767 |
int | -2147483648 ~ 2147483647 |
long | -9223372036854775808 ~ 9223372036854775807 |
float | 32-Bit-Gleitkommazahl mit einfacher Genauigkeit |
double | 64-Bit-Gleitkommazahl mit doppelter Genauigkeit |
Die Quelle enthält auch Beispiele für implizite und explizite Casts.
Main.java
public class Main {
public static void main(String[] args) {
//Implizite Besetzung
byte b = 1; // byte ← int
short s = b; // short ← byte
int i = s; // int ← short
long l = i; // long ← int
float f = l; // float ← long
double d = f; // double ← float
//Explizite Besetzung erforderlich
f = (float) d; // float ← double
l = (long) f; // long ← float
i = (int) l; // int ← long
s = (short) i; // short ← int
b = (byte) s; // byte ← short
}
}
Es wird so sein. ~~ Bitte sag mir, ob es schwer zu sehen ist ~~
Dies ist das Ende der Besetzung. Schneiden Sie auf den Grundteil! !!
Es gibt Szenen, in denen Casts auch für Objekttypen verwendet werden, aber ich werde sie weglassen. Ich frage mich, ob es später verstanden werden sollte.
Und ich habe große Probleme mit der Komposition ...
Nächstes Mal werde ich "scope" schreiben. ~~ Ich denke, es wäre unmöglich, wenn ich keine Kontrollaussagen studieren würde, aber ich würde gerne einen Weg finden, sie zum Überspringen zu bringen und dann zurück zu kommen ~~
Wenn Sie Fehler oder Fragen haben, zögern Sie bitte nicht, Masakari zu werfen. Ich werde mein Bestes geben, um dich zu erstechen! Dies ist hilfreich, da Sie schnell mit Twitter reagieren können.
Dann werde ich beim nächsten Mal mein Bestes geben!
Nächstes Mal → "Java-Teil 9-Bereich studieren"
Recommended Posts