Cette fois, "** Cast **"!
Le cast est également appelé conversion de type, et est le processus de conversion de types (int, octet, double, etc.).
Convertissez le type int en type d'octet! Convertissez le type double en type int! Convertissez le type court en type long!
etc... ~~ Étant donné que ce type de traitement sera éventuellement nécessaire, j'écrirai un article dès que possible comme élément de base ~~ ~~ Et le type d'objet est omis ... ~~
Étudions ce casting!
La raison pour laquelle le casting est nécessaire en premier lieu est ...
Par exemple, attribuer la valeur d'une variable de type octet à une variable de type int "** can **" C'est parce que le type d'octet et le type int sont des types similaires, le type d'octet est petit et le type int est grand.
Voici ce qui se passe lorsque vous vous procurez l'exemple ci-dessus.
Main.java
public class Main {
public static void main(String[] args) {
//déclaration de type d'octet
byte b = 100;
//déclaration de type int
int i = b; //int ← substitution d'octets
}
}
Peut être attribué normalement
Au contraire, lors de l'affectation du type int au type byte, ce qui se passe est une erreur!
La raison de l'erreur est que le type int ne peut pas tenir dans le type d'octet plus que le type d'octet.
Main.java
public class Main {
public static void main(String[] args) {
//déclaration de type int
int i = 100;
//déclaration de type d'octet
byte b = i; //une erreur byte ← int se produit
}
}
Si vous essayez d'attribuer une valeur de type double ou float à un entier tel que le type int, vous obtiendrez toujours une erreur. Le type entier ne contient rien après la virgule décimale, non? Puisque la plage qui peut être exprimée est différente, ce sera une erreur de colère en disant "Match the type!".
Mais c'est tout! Je dois vraiment lancer! Si vous avez besoin de ** forte volonté , vous devez utiliser " cast **".
** La diffusion est une conversion de type déraisonnable, elle n'est donc pas recommandée et ne doit pas être abusée. ** **
Comment écrire le casting Écrivez (tapez) avant la variable. Veuillez saisir le type que vous souhaitez convertir.
Avec l'erreur précédente,
byte b = i;
Récrire
byte b = (byte)i;
D'ACCORD! !!
Main.java
public class Main {
public static void main(String[] args) {
//déclaration de type int
int i = 100;
//déclaration de type d'octet
byte b = (byte)i; //byte ← int Aucune erreur ne se produit car je le lance! !! !!
}
}
De plus, comme le type est modifié de force, si vous transtypez le type double en type int, il y a un effet secondaire que seule la valeur de la partie entière est affectée, alors soyez prudent! Ensuite, j'aimerais vraiment voir la situation.
Main.java
public class Main {
public static void main(String[] args) {
//Déclaration de type double&Initialisation
double doubleNumber = 15.88d;
//déclaration de type int
int intNum;
//Diffuser en type int&Substitution
intNum = (int) doubleNumber;
//Afficher la valeur après la diffusion
System.out.println(intNum); //intNum est un entier de 15
}
}
Lors de la conversion d'un type double en type int, le .88d de 15.88d est éliminé et seulement 15 est affecté à intNum.
Il y a beaucoup d'autres effets secondaires, alors faites attention ... (style horreur)
Il existe deux types de moulages.
--Lorsque Java jette les coulisses --Lors de l'écriture explicite du contenu de la distribution dans la source (explicite signifie la conversion en utilisant ())
La différence entre ces deux est
--Quand il n'y a pas de problème même si le premier ne lance pas explicitement --Ce dernier est lorsque des problèmes surviennent sauf si vous lancez
Il est devenu.
Précédemment introduit "[Type primitif](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) ”les affectations de haut en bas n'ont pas besoin d'être explicitement castées, mais les affectations de bas en haut sont explicites. Doit être jeté.
Pour le moment, voici un tableau simple lié aux valeurs numériques.
Moule | Gamme box |
---|---|
byte | -128 ~ 127 |
short | -32768 ~ 32767 |
int | -2147483648 ~ 2147483647 |
long | -9223372036854775808 ~ 9223372036854775807 |
float | Nombre à virgule flottante simple précision 32 bits |
double | Nombre à virgule flottante double précision 64 bits |
La source comprend également des exemples de transtypages implicites et explicites.
Main.java
public class Main {
public static void main(String[] args) {
//Distribution implicite
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
//Cast explicite requis
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
}
}
Ce sera comme ça. ~~ S'il vous plaît dites-moi si c'est difficile à voir ~~
C'est la fin du casting. Coupez à la partie de base! !!
Il y a des scènes où les moulages sont également utilisés pour les types d'objets, mais je les omettrai. Je me demande si cela doit être compris plus tard.
Et j'ai beaucoup de mal avec la composition ...
La prochaine fois, j'écrirai "portée". ~~ Je pense que ce serait impossible si je n'étudiais pas les phrases de contrôle, mais j'aimerais trouver un moyen de les faire sauter puis de revenir ~~
Si vous avez des erreurs ou des questions, n'hésitez pas à lancer Masakari. Je ferai de mon mieux pour vous poignarder! C'est utile car vous pouvez réagir rapidement avec Twitter.
Ensuite, je ferai de mon mieux la prochaine fois!
La prochaine fois → "Étude Java-Part 9-Scope"
Recommended Posts