Apa itu Tipe Casting di Java?
Tipe data adalah sekumpulan nilai yang telah ditentukan sebelumnya yang menentukan tipe nilai yang dapat disimpan di dalamnya beserta operasi yang dapat dilakukan pada nilai tersebut.Mengapa Tipe Casting Diperlukan?
Java memiliki tipe data primitif berbeda yang memerlukan ruang berbeda di memori. Hal ini dapat menyebabkan masalah kompatibilitas saat menetapkan nilai dari satu tipe data ke tipe data lainnya. Jika tipe data sudah kompatibel, typecasting dilakukan secara otomatis oleh compiler. Dengan demikian, typecasting memecahkan masalah kompatibilitas utama ketika berhadapan dengan tipe data yang berbeda dalam program kita.Jenis Pengecoran Tipe Java
Ada dua jenis tipe casting di Java.- Pengecoran Tipe Pelebaran — Juga dikenal sebagai Pengecoran Tipe Implisit atau Otomatis
- Pengecoran Tipe Penyempitan — Juga dikenal sebagai Pengecoran Tipe Eksplisit atau Manual
Pengecoran Tipe Pelebaran
Pelebaran typecasting, seperti namanya, mengacu pada pelebaran tipe data yang lebih kecil ke tipe data yang lebih besar. Kita melakukan typecasting ini ketika kita ingin mengubah tipe kecil menjadi tipe besar. Tipe data harus kompatibel satu sama lain. Tidak ada konversi implisit dari tipe numerik ke char atau boolean. Di Java, tipe char dan boolean tidak kompatibel.
byte -> pendek -> char -> int -> panjang -> float -> ganda
Jenis casting ini dilakukan secara otomatis oleh compiler tanpa kehilangan informasi. Itu tidak memerlukan pemicu eksternal apa pun oleh programmer.
Contoh
//Automatic type conversion
public class WideningExample {
public static void main(String[] args) {
int i = 100;
System.out.println("int value: " + i);
// int to long type
long l = i;
System.out.println("int to long value: " + l);
// long to float type
float f = l;
System.out.println("int to float value: " + f);
byte b = 1;
System.out.println("byte value: " + b);
// byte to int type
i = b;
System.out.println("byte to int value: " + i);
char c = 'a';
System.out.println("char value: " + c);
// char to int type
i = c;
// prints the ASCII value of the given character
// ASCII value of 'a' = 97
System.out.println("char to int value: " + i);
}
}
Keluaran
nilai int: 100 int ke nilai panjang: 100 int ke nilai float: 100,0 nilai byte: 1 byte ke nilai int: 1 nilai char: nilai char ke int: 97
Penjelasan
Pada kode di atas, kami telah menunjukkan pelebaran typecasting yang dilakukan oleh compiler secara otomatis. Pertama-tama, kami menetapkan nilai ke int , byte , dan char . Kami kemudian menetapkan nilai int ke long dan float , keduanya lebih besar dari int . Kami juga menetapkan nilai byte dan char ke int . Baik byte maupun char merupakan tipe data yang lebih kecil daripada int , oleh karena itu, konversi ini bersifat implisit.Pengecoran Tipe Penyempitan
Mempersempit typecasting, seperti namanya, mengacu pada penyempitan tipe data yang lebih besar ke tipe data yang lebih kecil. Kita melakukan typecasting ini ketika kita ingin mengubah tipe besar ke tipe kecil.
ganda -> float -> panjang -> int -> char -> pendek -> byte
Untuk jenis transmisi ini, kami mengganti konversi default Java dengan menentukan konversi kami sendiri. Untuk mencapai hal ini, kita menulis variabel atau nilai yang perlu diketikkan, diawali dengan tipe data target dalam tanda kurung '()'. Namun, jenis pengecoran ini dapat mengakibatkan hilangnya presisi.
Contoh
//Manual Type Conversion
public class NarrowingExample {
public static void main(String[] arg) {
// double data type
double d = 97.04;
// Print statements
System.out.println("double value: " + d);
// Narrowing type casting from double to long
// implicitly writing the target data type in () followed by initial data type
long l = (long) d;
// fractional part lost - loss of precision
System.out.println("long value: " + l);
// Narrowing type casting from double to int
// implicitly writing the target data type in () followed by initial data type
int i = (int) l;
// fractional part lost - loss of precision
System.out.println("int value: " + i);
// Narrowing type casting from double to int
// implicitly writing the target data type in () followed by initial data type
char c = (char) i;
// displaying character corresponding to the ASCII value of 100
System.out.println("char value: " + c);
}
}
Keluaran
nilai ganda: 97,04 nilai panjang: 97 nilai int: 97 nilai karakter: a
GO TO FULL VERSION