Dalam Java, konversi jenis sering dapat ditemui, dari definisi variabel hingga penyalinan, perhitungan variabel numerik ke transfer parameter metode, pemodelan antara kelas dasar dan kelas turunan, dll. Konversi jenis dapat dilihat di mana -mana. Ketik konversi di Java memainkan peran penting dalam pengkodean Java.
Ada banyak masalah yang harus diperhatikan saat mendefinisikan variabel. Jika Anda tidak hati -hati, Anda akan kehilangan akurasi atau tipe yang tidak kompatibel.
Misalnya:
1. Saat mendefinisikan data bilangan bulat panjang, akhiran L atau L harus ditambahkan.
Long L = 123456789012345L
2. Saat mendefinisikan tipe presisi tunggal (digit signifikan 7-8-bit), akhiran f atau f harus ditambahkan.
float f = 12.5f
3. Jenis Boolean tidak dapat dikonversi ke tipe data lainnya.
Di antara mereka, kita sering mengalami masalah konversi tipe data. Yang paling umum adalah konversi implisit dan konversi cor. Mari kita menganalisisnya.
Konversi implisit
fitur:
Dari kecil ke besar, dapat dikonversi secara implisit, dan tipe data akan ditingkatkan secara otomatis.
byte, pendek, char -> int -> long -> float -> double
Catatan: Long adalah 8 byte dan float adalah 4 byte.
Long adalah bilangan bulat, float adalah tipe floating point. Aturan penyimpanan untuk bilangan bulat dan nomor titik mengambang berbeda. Ingatlah bahwa kisaran panjang lebih kecil dari float.
contoh:
byte a = 10;
int b = a;
Ketika INTB = A dikompilasi, A secara implisit dikonversi menjadi tipe int.
Kasus
fitur:
Dari besar ke kecil (jika Anda tahu dengan jelas bahwa data dapat diwakili oleh tipe data ini, Anda dapat menggunakan casting)
Format:
(Tipe data yang dikonversi) Variabel atau nilai.
Catatan: Secara umum, casting tidak disarankan sama sekali.
Contoh 1:
int a = 10; byte b = (byte) a;
Ketika byte b = (byte) a dikompilasi, A dilemparkan ke tipe byte.
Contoh 2:
kelas qiangzhidemo {public static void main (string [] args) {byte b = (byte) 130; System.out.println (b); // Cetak Hasil -26}}Analisa:
Data 130 Default ke Int Ketik Data Desimal,
Langkah 1: Konversi desimal 130 menjadi data biner.
10000010
Langkah 2: Representasi 130 dalam memori adalah sebagai berikut
Kode Asli: 0000000000000000.000 00000000 10000010
Langkah 3: Temukan kode komplemen INT130
Karena 130 adalah angka positif, kode terbalik dan kode komplemen konsisten dengan kode asli.
Kode Komplemen: 00000000000000000000000 00000000 100000010
Langkah 4: Mencegat kode komplemen, hanya menyisakan 8 digit terakhir.
(byte) Kode komplemen 130 adalah: 10000010
Langkah 5: Konversi komplemen ini menjadi kode asli.
Karena bit tanda (bit pertama) adalah 1, angka adalah angka negatif.
Kode Terbalik: 10000001 (Kode Komplemen-1)
Kode Asli: 111111110 (bit simbol tetap tidak berubah, bit data terbalik)
Konversi ke desimal ke -126, jadi akhirnya cetak -126.
Contoh 3:
Shorts = 1; S = S +1;
Dan
Shorts = 1; S+= 1;
Apakah ada masalah? Mengapa?
Analisa:
Program pertama akan melaporkan kesalahan: Kesalahan: Jenis yang tidak kompatibel: Mungkin ada kerugian saat mengonversi dari int ke pendek
Penyebab: S = S+1; S+1 akan secara implisit dikonversi menjadi tipe int. Ketika tipe int ditugaskan ke tipe pendek, itu mungkin hilang.
Program kedua dapat dikompilasi dan dijalankan.
Alasan: S+= 1, meskipun dapat dianggap sebagai S = S+1, masih ada perbedaan. Ada gips di S+= 1, yaitu, S = (pendek) (S+1), yang akan memaksa nilai S+1 ke tipe pendek, sehingga tidak akan ada kesalahan.
ringkasan:
Jika masalah konversi tipe data terjadi pada beberapa program mini, kami mungkin dapat melihat sekilas. Namun, ketika menulis sistem yang sangat besar dan memiliki sejumlah besar data, masalah -masalah kecil ini dapat menyebabkan kesalahan sistem atau bahkan macet, jadi kita harus memahami ketelitian penulisan kode awal.
Konten di atas memperkenalkan konversi Konversi Implisir Java Basic vs Cast, saya harap Anda menyukainya.