Introduction à la conversion de type en Java

Une fois que les variables ainsi que les constantes de divers types seront rassemblées dans une expression, elles peuvent être changées en un type similaire. Cette technique de transformation d'un seul type prédéfini en un autre est appelée conversion de type en Java.

Conversion de type

Il existe 2 types de conversion différents que nous utilisons dans les langages de programmation.

1. Conversion de type implicite

Si la conversion de type est effectuée instantanément via le compilateur sans implication du programmeur, la conversion de type est appelée conversion de type implicite. Le compilateur encourage fondamentalement chaque opérande vers le type de données du plus grand opérande. Aucune perte de données ne se produit tout au long de la conversion de données. La conversion d'une quantité plus petite, d'un nombre trop grand peut être une conversion implicite. Transformation de données de type entier en float.

float i=0;
int j=10;
i=j;

// Cela peut être une transformation implicite car float peut être plus grand qu'un entier, donc pas de manque de données Et aussi pas d'exception.

2. Conversion de type explicite

La conversion de type qui peut être appliquée via le programmeur est appelée conversion de type explicite. fondamentalement, le programmeur fait une expression pour devenir d'un type particulier. La transformation de type explicite peut être appelée conversion de type. La perte de données peut ou non se produire pendant la conversion des données. Il existe donc une probabilité de perte de détails. il pourrait générer une erreur s'il tentait peut-être de fonctionner sans transtypage. La transformation d'un plus grand nombre en nombres plus petits peut être une conversion explicite.

float k=123.456
int i= (int) k

// cela peut être une conversion explicite ainsi que, (int) est un opérateur de transtypage. À ce stade, nous pouvons réussir à échapper à une exception, mais vous pouvez trouver la perte visible de données. soit i = 123

// .456 peut être supprimé lors du processus de conversion

Conversion de type en Java

Comme les autres langages de programmation, il existe 2 types de conversion en java:

Conversion de type implicite

  • Ce sont généralement ce que nous appelons la conversion d'élargissement, et cela peut être fait automatiquement car nous nous déplaçons vers des types de données plus larges. Donc, si nous avons un entier 32 bits et que nous voulons passer à un entier 64 bits, c'est plus large. Ainsi, la valeur peut être déplacée en toute sécurité afin que cela puisse être fait implicitement. Et le compilateur doit prendre une décision sur la façon d'effectuer ces conversions, et les règles sont assez simples.
  • Si nous avons une expression avec plusieurs tailles entières (mixtes), si nous avons court et long, quelle que soit la plus grande taille entière, c'est ce que les choses vont convertir. Donc, si nous faisons une opération avec un court et un long, le court sera implicitement jeté dans le long.
  • Si nous effectuons une opération avec des tailles à virgule flottante mixtes, nous avons donc un flottant et un double, ils iront toujours au double car le double est la plus grande taille à virgule flottante.
  • Et puis, si nous avons une opération qui utilise des types entiers mixtes et des types à virgule flottante, le compilateur convertira en quel que soit le plus grand point flottant de l'équation. Donc, si nous faisons une opération avec un long et à flot, le long sera jeté à flot.
  • Si nous effectuons une opération avec un long et un double, le long sera ensuite converti en double.

Conversion de type explicite

  • Nous effectuons explicitement dans notre code lors de l'utilisation de cette opération de conversion. Lorsque nous faisons cela, nous prenons la responsabilité de tout ce qui se produit à la suite de ce type de conversion. Pour cette raison, nous pouvons effectuer à la fois une conversion élargie et étroite. Donc élargissement passant de 32 bits à 64 bits, rétrécissement, passant de 64 bits à 32 bits. Nous devons simplement être conscients que nous savons ce qui pourrait arriver.
  • Si nous effectuons une conversion explicite d'un virgule flottante en un entier, de sorte que les virgules flottantes puissent avoir une partie fractionnaire, l'entier ne peut pas, donc toute partie fractionnaire serait supprimée lorsque nous transtypons ce flotteur en un entier.
  • Vous devez être prudent lorsque vous effectuez une conversion restreinte. Si nous avons un entier 64 bits, il a la capacité de contenir des valeurs trop grandes pour tenir dans un entier 32 bits.
  • Donc, si nous convertissons ce 64 bits en 32 bits, le programme le fera réellement, mais si la valeur est trop grande pour tenir dans un 32 bits, vous obtiendrez des résultats étranges. Donc, vous voulez vous assurer que lorsque vous le lancez en faisant un casting plus étroit, vous savez que ce que vous faites est sûr.
  • Et le dernier est juste que vous voulez être prudent lors de la conversion d'un entier en virgule flottante car si vous avez un entier avec un grand nombre de chiffres significatifs, en raison de la façon dont le point flottant est stocké, vous pourriez perdre une partie de ces chiffres significatifs.

Exemples de conversion de type

Exemples de conversion de type mentionnés ci-dessous en détail:

Code:

Nous avons un programme simple ici, une déclaration en haut, float, double, byte, short et long, et les variables sont chacune nommées pour aider à identifier à quoi ressemblent leurs types. Float est floatVal,

Code:

long is longVal

Code:

Et le programme imprime simplement un message de réussite s'il s'exécute.

Voyons donc comment une partie de la conversion de type entre en jeu ici. Alors, tout d'abord, allons-y et créons une variable. Nous avons court et nous l'appellerons simplement le résultat.

En fait, allons-y et appelons-le result1. Et faisons simplement une tâche simple. Et donc d'abord, nous allons simplement lui attribuer l'octetVal. Maintenant, comme nous nous y attendons, si nous allons de l'avant et exécutons cela, alors courons avec succès.

Code:

Production:

Nous savons que c'est une affectation valide car un octet peut être affecté à un court car il s'agit d'une conversion élargie.

Si nous prenons ce byteVal cependant, et nous en faisons un longVal à la place, alors maintenant c'est en fait un long, si nous l'exécutons, nous obtenons ici un message d'erreur disant type incompatible, perte possible de conversion de long en court.

Code:

Donc, ce que nous pouvons faire ici, c'est que nous pouvons faire un cast explicite. Nous allons juste mettre court devant cela. Alors maintenant, il est valide pour que nous puissions l'exécuter.

Code:

Et bien sûr, cela fonctionne. Parce que le long ne pouvait pas devenir un court parce que c'était une conversion rétrécissante.

Production:

Mais en plaçant la distribution explicite devant elle, elle est maintenant valide. Si nous le voulons, nous pouvons mettre une notation de cast très explicite et dire que vous savez, nous savons que même si une conversion d'octets est légale, nous voulons montrer explicitement que nous la castons en y mettant le cast court, nous pouvons le faire cela, et c'est tout à fait légal.

Code:

Production:

Voyons maintenant un autre scénario. Nous allons créer une autre variable que nous appellerons result2 , et result2 est également court. Et ce que nous voulons faire ici, c'est que nous allons simplement prendre notre octet, et nous voulons soustraire le longVal. Maintenant, nous savons que ce n'est pas légal car le résultat de l'expression va être la taille du plus grand entier, qui est la longueur.

Code:

Donc, si nous exécutons cela, nous obtenons une erreur indiquant qu'il n'est pas valide de convertir un long en un court.

Mais disons que nous voulons aller de l'avant et garder ce résultat court. Nous devons faire un casting. Mais nous voulons lancer cette fois est la valeur de l'ensemble du résultat ici. Donc, ce que nous allons faire, c'est mettre le casting court devant lui ici.

Mettez le casting court devant lui ici. Et enveloppez le tout entre parenthèses. Et lancez-le.

Code:

Il fonctionnera avec succès.

Production:

Déclarez maintenant une autre variable appelée result3, mais déclarez-la longue. Nous avons donc obtenu le résultat 3, et que ferons-nous ici, c'est que nous assignerons notre longVal - floatVal. Donc, nous exécutons cela, l'erreur se perd en convertissant la conversion de float en long car chaque fois que nous avons un type entier et n'importe quel type à virgule flottante, le résultat sera le type à virgule flottante.

Code:

Alors allons-y et convertissons maintenant notre résultat en un flottant. Donc, en faisant un flotteur, nous devrions pouvoir aller de l'avant et l'exécuter. Et courez avec succès.

Code:

Production:

Mais maintenant, si nous prenons le floatVal ici et que nous le convertissons en doubleVal et si nous essayons de l'exécuter, nous obtenons l'erreur parce qu'il dit que le résultat va être un double parce que lorsque vous faites un entier et une virgule flottante, c'est la taille du plus grand point flottant de l'équation.

Code:

Alors allons-y et faisons de ce résultat un double, maintenant nous pouvons l'exécuter.

Code:

Production:

Conclusion

1. Les variables sont fortement typées en Java
2. Types primitifs

  • Types entiers, types à virgule flottante, type char, type booléen

3. Conversion de type

  • Nous devons souvent passer d'un type à l'autre, car nos programmes, à mesure qu'ils deviennent plus complexes, impliqueront probablement plusieurs types de données.
  • Le compilateur peut gérer les conversions de types qui s'élargissent, passant d'un type à un autre pouvant contenir des valeurs plus importantes,
  • Mais vous pouvez également utiliser la conversion pour effectuer explicitement ces types de conversions que le compilateur ne peut pas effectuer automatiquement.

Articles recommandés

Ceci est un guide de conversion de type en Java. Nous discutons ici de l'introduction, de la conversion de type en java comme implicite et explicite ainsi que des exemples utilisant différentes situations. Vous pouvez également consulter les articles suivants pour en savoir plus-

  1. Constructeur en Java
  2. Tri en Java
  3. Constructeur en Java
  4. JCheckBox en Java
  5. Lancer vs lancer | Les 5 principales différences que vous devez savoir
  6. Comment implémenter la case à cocher dans Bootstrap
  7. Conversion en Java avec des exemples