Maison > Java > javaDidacticiel > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-10-26 22:11:03
original
198 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!