Apakah Jenis Casting di Jawa?
Jenis data ialah set nilai yang dipratentukan yang menentukan jenis nilai yang boleh disimpan di dalamnya bersama-sama dengan operasi yang boleh dijalankan ke atasnya.Mengapa Jenis Casting Diperlukan?
Java mempunyai jenis data primitif yang berbeza yang memerlukan ruang yang berbeza dalam ingatan. Ini boleh menyebabkan isu keserasian semasa memberikan nilai satu jenis data kepada yang lain. Jika datatypes sudah serasi, typecasting dilakukan secara automatik oleh compiler. Oleh itu, taip menyelesaikan masalah keserasian utama apabila berurusan dengan jenis data yang berbeza dalam program kami.Jenis Casting Jenis Java
Terdapat dua jenis pemutus jenis di Jawa.- Pelebaran Jenis Casting — Juga dikenali sebagai Hantaran Jenis Tersirat atau Automatik
- Penyempitan Jenis Hantaran — Juga dikenali sebagai Hantaran Jenis Eksplisit atau Manual
Pelebaran Jenis Casting
Pelebaran taip, seperti namanya, merujuk kepada pelebaran jenis data yang lebih kecil kepada jenis data yang lebih besar. Kami melakukan taip ini apabila kami ingin menukar jenis kecil kepada jenis besar. Jenis data mestilah serasi antara satu sama lain. Tiada penukaran tersirat daripada numerik kepada jenis char atau boolean. Di Java, jenis char dan boolean tidak serasi.
byte -> short -> char -> int -> long -> float -> double
Jenis pemutus ini dilakukan secara automatik oleh pengkompil tanpa kehilangan maklumat. Ia tidak memerlukan sebarang pencetus luaran oleh pengaturcara.
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);
}
}
Pengeluaran
nilai int: 100 int kepada nilai panjang: 100 int kepada nilai terapung: 100.0 nilai bait: 1 bait kepada nilai int: 1 nilai char: char kepada nilai int: 97
Penjelasan
Dalam kod di atas, kami telah menunjukkan pelebaran taip yang dilakukan oleh pengkompil secara automatik. Pertama sekali, kami memberikan nilai kepada int , byte , dan char . Kami kemudiannya memberikan nilai int kepada long dan float , yang kedua-duanya lebih besar daripada int . Kami juga memberikan nilai bait dan char kepada int . Kedua-dua bait dan char adalah jenis data yang lebih kecil daripada int , oleh itu, penukaran ini adalah tersirat.Pemutus Jenis Penyempitan
Penyempitan taip, seperti namanya, merujuk kepada penyempitan jenis data yang lebih besar kepada jenis data yang lebih kecil. Kami melakukan penuangan taip ini apabila kami ingin menukar jenis besar kepada jenis kecil.
double -> float -> long -> int -> char -> short -> byte
Untuk jenis penghantaran ini, kami mengatasi penukaran lalai Java dengan menentukan penukaran kami sendiri. Untuk mencapai matlamat ini, kami menulis pembolehubah atau nilai yang perlu ditaip didahului oleh jenis data sasaran dalam kurungan '()'. Walau bagaimanapun, jenis tuangan ini boleh mengakibatkan kehilangan ketepatan yang mungkin.
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);
}
}
Pengeluaran
nilai berganda: 97.04 nilai panjang: 97 nilai int: 97 nilai char: a
GO TO FULL VERSION