Rumah > Java > javaTutorial > Cara Selamat Menukar panjang kepada int dalam Java: `toIntExact` vs Explicit Checking?

Cara Selamat Menukar panjang kepada int dalam Java: `toIntExact` vs Explicit Checking?

Mary-Kate Olsen
Lepaskan: 2024-10-26 22:11:03
asal
294 orang telah melayarinya

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

Mengelakkan Ralat Pemangkasan Apabila Menghantar panjang ke int

Apabila menukar nilai panjang kepada int di Java, adalah penting untuk memastikan penukaran tidak membawa kepada kehilangan maklumat. Satu cara untuk mencapai ini adalah melalui semakan eksplisit, seperti yang ditunjukkan dalam pelaksanaan yang diberikan:

<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>
Salin selepas log masuk

Walau bagaimanapun, sejak Java 8, penyelesaian yang lebih idiomatik telah diperkenalkan:

Matematik .toIntExact()

Kaedah ini membenarkan penukaran long-to-int yang selamat dengan membuang ArithmeticException apabila limpahan berlaku:

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

Java 8 juga termasuk kaedah "tepat" yang serupa untuk pelbagai operasi aritmetik, memastikan ketepatan dan mengelakkan kehilangan ketepatan yang tidak dijangka:

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

Dengan menggunakan kaedah ini, pembangun boleh membuang panjang dengan yakin nilai kepada int tanpa risiko kehilangan data atau pengecualian masa jalan akibat limpahan.

Atas ialah kandungan terperinci Cara Selamat Menukar panjang kepada int dalam Java: `toIntExact` vs Explicit Checking?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan