Casting dan Rentang
Diperkenalkan| English | Makna |
|---|---|
| casting/ˈkæstɪŋ/ | penyaringan (casting) |
| truncates/ˈtrʌŋkeɪts/ | pemotongan |
| widening/ˈwaɪdənɪŋ/ | pelebaran |
| narrowing/ˈnærəʊɪŋ/ | penyempitan |
| range/reɪndʒ/ | rentang |
| overflow/ˌəʊvəˈfləʊ/ | kelebihan kapasitas (overflow) |
Mengubah tipe data nilai pada
- Casting mengonversi nilai dari satu tipe ke tipe lain.
- Tulis tipe tujuan dalam tanda kurung:
(double) 5menghasilkan5.0;(int) 3.9menghasilkan3. - Casting ke
intmemotong — ia membuang bagian desimal, bukan membulatkan. (int) 3.9menuju3, dan(int) -2.7menuju-2(menuju nol).
Pelebaran terjadi secara otomatis
- Pergi dari tipe yang lebih kecil ke yang lebih besar (
int→double) disebut penyebaran. - Penyebaran aman, sehingga Java melakukannya secara otomatis:
double d = 5;menyimpan5.0. - Tidak ada informasi yang hilang saat berpindah dari
intkedouble. - Anda jarang perlu menulis cast penyebaran, namun hal itu diperbolehkan.
Penyempitan memerlukan eksplisit cast
- Pergi dari tipe yang lebih besar ke yang lebih kecil (
double→int) disebut penyempitan — hal ini dapat kehilangan data. - Java memerlukan cast eksplisit:
int n = (int) 3.9;(tanpa cast, program tidak akan bisa dikompilasi). - Cast adalah janji Anda bahwa "Saya tahu saya sedang membuang bagian desimal."
- Penyempitan memotong menuju nol.
Rentang dan overflow pada
- Setiap tipe memiliki rentang tetap:
intmenampung sekitar ±2,1 miliar. - Melebihi rentang menyebabkan overflow — nilai melingkar menjadi angka yang salah.
- Tidak ada error yang muncul; hasilnya hanyalah angka yang salah tanpa suara.
- Untuk bilangan bulat yang sangat besar, diperlukan tipe yang lebih besar (seperti
long).
Pengecastan ke int memotong — TIDAK membulatkan. (int) 3.9 adalah 3, bukan 4; (int) 2.99 adalah 2. Untuk memaksa pembagian bilangan desimal, castkan satu operand: (double) 7 / 2 adalah 3.5, tetapi (int)(7.0 / 2) adalah 3. Dan waspadai overflow: hasil int yang melebihi ±2,1 miliar akan membungkus secara diam-diam tanpa error.
Mencari rata-rata dua int dengan benar:
int a = 7, b = 2;int avg = a / b;→3(pembagian int membuang sisa — mungkin bukan yang Anda inginkan).double avg = (double) a / b;→3.5(casting salah satu sisi memaksa pembagian desimal).
Casting (type) value mengubah antar tipe. int → double (widening) otomatis dan aman; double → int (narrowing) memerlukan cast eksplisit dan memotong menuju nol (tidak ada pembulatan). Setiap tipe memiliki rentang tetap; melampauinya menyebabkan overflow diam-diam.
Casting antara int dan double
(int) memotong 3.9 menjadi 3; casting satu sisi menghasilkan 3.5.
Apa nilai dari (int) 3.9 dalam Java?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Casting ke int memotong (membuang desimal) → 3, bukan 4.
Mengubah int ke double (konversi aman dan otomatis) disebut...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Kecil → besar adalah pelebaran, dilakukan secara otomatis.
Mana yang memerlukan casting eksplisit agar dapat dikompilasi?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
double → int adalah penyempitan dan memerlukan casting eksplisit.
Apa nilai dari (double) 7 / 2?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Mengoperasikan satu operand memaksa pembagian bilangan desimal → 3.5.
Hasil int di luar rentangnya menyebabkan overflow, yang Java laporkan sebagai error.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Overflow membungkus secara diam-diam — tidak ada error yang muncul.