Étudier Java ~ Partie 8 ~ Cast

1.Tout d'abord

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!

2. Cast

2.1. Concept de base de la fonte

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.

キャプチャ_31.png

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!

キャプチャ_32.png

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!".

2.2. Jeté de force

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! !! !!

	}
}

2.3. Cast avec effets secondaires

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)

2.4. Casts implicites et explicites

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 ~~

3. Conclusion

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

Étudier Java ~ Partie 8 ~ Cast
Étudier Java ―― 3
Étudier Java ―― 9
Étudier Java ―― 4
Étudier Java -5
Étudier Java ―― 1
Étudier Java # 0
Étudier Java ―― 8
Étudier Java ②
Étudier Java ―― 7
Étudier Java ―― 2
Étudier Java ①
Étudier Java -10
Étudier Java 8 (facultatif)
java pratique partie 1
Étudier java9 (jShell)
Étudier Java 8 (Stream)
Etudier Java 8 (Collector / Collectors)
Etudier Java 8 (voir méthode)
Etudier Java 8 (voir constructeur)
Etudier Java 8 (expression lambda)
45 Techniques d'optimisation des performances Java (partie 1)
Java et Iterator Part 1 External Iterator Edition
Apache Hadoop et Java 9 (partie 1)
Portée de la requête Java Servlet / JSP, partie 1
Java pour apprendre avec les ramen [Partie 1]
Étudier Java # 6 (Comment écrire des blocs)
Portée de la requête Java Servlet / JSP, partie 2
Utilisation de base de Java Facultatif Partie 1
Java
Etudier Java 8 (méthode StaticIF et Default)
Traitement serveur avec Java (Introduction partie 1)
Faire une analyse de phrase en Java 8 (partie 2)
Etudier Java 8 (String Joiner et Join)
Java
Essai GAE / Java8 (Partie 6: «Échec du déploiement»)
Étudier java9 (dropWhile, takeWhile et Stream.ofNullable)
Création d'une analyse de phrase dans Java 8 (partie 1)
Kotlin's Class part.2 à envoyer aux développeurs Java
Utilisez OpenCV_Contrib (ArUco) avec Java! (Partie 2-Programmation)
Étude de Java 8 (API de date dans le package java.time)
Appeler l'API GitHub à partir de l'API Socket de Java, partie 2
[# 1 Java] Principes de base de Java-Major avant d'étudier-
Etudier comment utiliser le constructeur (java)
Introduction à Java à partir de 0 Partie 1
AWS Lambda (Lambda) Partie 1 avec Java pour démarrer maintenant
Étudier Java (examen d'ingénieur en informatique de base)
Essai GAE / Java8 (Partie 4: «Logique d'accès à la banque de données»)
Création d'une classe de matrice dans Java Partie 1