Maison  >  Article  >  Java  >  Comment convertir en toute sécurité un long en un int en Java : « toIntExact » vs vérification explicite ?

Comment convertir en toute sécurité un long en un int en Java : « toIntExact » vs vérification explicite ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 22:11:03180parcourir

How to Safely Convert a long to an int in Java:  `toIntExact` vs Explicit Checking?

Éviter les erreurs de troncature lors de la conversion de long en int

Lors de la conversion d'une valeur longue en int en Java, il est crucial de s'assurer que la conversion n'entraîne pas de perte d'informations. Une façon d'y parvenir consiste à effectuer une vérification explicite, comme démontré dans l'implémentation donnée :

<code class="java">public static int safeLongToInt(long l) {
    int i = (int)l;
    if ((long)i != l) {
        throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
    }
    return i;
}</code>

Cependant, depuis Java 8, une solution plus idiomatique a été introduite :

Math .toIntExact()

Cette méthode permet une conversion sûre de long en entier en lançant une ArithmeticException en cas de débordement :

<code class="java">import java.lang.Math;
...
long foo = 10L;
int bar = Math.toIntExact(foo);</code>

Java 8 inclut également des méthodes "exactes" similaires pour diverses opérations arithmétiques, garantissant l'exactitude et évitant une perte de précision inattendue :

  • Math.incrementExact(long)
  • Math.subtractExact(long, long)
  • Math .decrementExact(long)
  • Math.negateExact(long)
  • Math.subtractExact(int, int)

En utilisant ces méthodes, les développeurs peuvent lancer du long en toute confiance valeurs en int sans risque de perte de données ou d'exceptions d'exécution dues à un débordement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn