Casting char Dengan Tipe Numerik

Sebuah char dapat di-casting pada tipe numerik apapun dan juga sebaliknya. Ketika suatu integer di-casting menjadi sebuah char, hanya 16 bit data saja yang digunakan, sementara bagian lainnya diabaikan.


Contohnya:

public class CastingChar {
   
    public static void main (String args []){


        char a = (char)0XAB006a; //kode 16 bit 006a di tetapkan ke a
        System.out.print(a); // a adalah character j


    }
}


Output:
j

Casting Angka Desimal

Ketika angka desimal di cast menjadi char, ada dua proses yang terjadi, yaitu:
  • Nilai desimal itu akan di cast terlebih dahulu menjadi int
  • Nilai int itu kemudian akan di cast menjadi char 
Contoh:

public class CastingChar {
   
    public static void main (String args []){
       
        char a = (char)70.87; //Desimal 70 ditetapkan ke a
        System.out.print(a); // a adalah character F
       
    }
}


Output:
F

Casting Ke Tipe Numerik

Ketika suatu char di cast ke tipe numerik, maka character Unicode di cast ke tipe numerik yang spesifik.

Contoh:

public class CastingInt {
   
    public static void main (String args []){
       
        int a = (int)'F';
        System.out.print(a);
       
    }
}


Output:
70

Casting secara implisit dapat digunakan jika hasil dari casting masuk kedalam variabel target. Jika tidak, maka casting secara eksplisit harus dilakukan.

Implisit Dan Eksplisit Casting

Sebagai contoh, Unicode dari F adalah 70, yang masih merupakan range dari tipe byte. Oleh karena itu, implisit casting di bawah ini tidak akan menjadi masalah :

public class ImplicitCast{
   
    public static void main (String args []){
       
        byte a = 'F';
        int i = a;
       
    }
}


Namun, casting di bawah ini akan memiliki masalah, karena Unicode, telah melampaui ukuran byte.

Contoh:

public class ImplisitCast {
   
    public static void main (String args []){
       
        byte a = '\uAF71';
        int i = a;
       
    }
}


Agar nilai Unicode itu bisa ditetapkan ke variabel a, maka casting secara eksplisit harus dilakukan.

Contoh:

public class EksplisitCast{
   
    public static void main (String args []){
       
        byte a = (byte) '\uAF71';
        int i = a;
       
    }
}


Setiap integer yang bernilai positif antara 0 dan FFFF dalam heksadesimal dapat di cast ke character secara implisit. Sedangkan setiap angka yang berada diluar range ini harus di cast ke char secara eksplisit.

Seluruh operator numerik dapat diaplikasikan pada char operand. Suatu char operand secara otomatis di cast menjadi angka jika operand lainnya berupa angka ataupun character.

Bila operand lainnya berupa String, maka character akan digabungkan dengan String.

Sebagai contoh adalah kode di bawah ini:

public class TestChar {
   
    public static void main (String args []){
       
        int a = '5' + '8';//(int)'5' adalah 53 dan (int)'8' adalah 56
        System.out.println("a adalah " + a);// a adalah 109
       
        int b = 5 + 'g';//(int)'g' adalah 103
        System.out.println("b adalah " + b);//b adalah 108
       
        System.out.println(b + " adalah Unicode untuk character "
        + (char)b); // adalah Unicode untuk character l
       
        //String + char
        System.out.println("Chapter " + '2');
       
    }
}


Output:
a adalah 109
b adalah 108
108 adalah Unicode untuk character l
Chapter 2

Tidak ada komentar

Bahasa Java. Diberdayakan oleh Blogger.