Ép kiểu trong java

Khi gán giá trị của một kiểu dữ liệu cho một kiểu dữ liệu khác thì bắt buộc phải ép kiểu.

Ví dụ ép kiểu một số long về int.

int i = (long)3L;

Ép kiểu tự động

Ép kiểu tự động diễn ra khi:

  • Kiểu dữ liệu của biến tham chiếu tương thích với giá trị gán.
  • Khi gán giá trị của kiểu dữ liệu bé sang kiểu dữ liệu lớn hơn.

Thứ tự tăng dần của các kiểu dữ liệu nguyên thủy

int-> short -> int -> long -> float -> double

Ví dụ tự động chuyển đổi trong kiểu dữ liệu nguyên thủy.

class Test 
{ 
    public static void main(String[] args) 
    { 
        int i = 100;  
          
        // automatic type conversion 
        long l = i;  
          
        // automatic type conversion 
        float f = l;  
        System.out.println("Int value "+i); 
        System.out.println("Long value "+l); 
        System.out.println("Float value "+f); 
    } 
}

Ép kiểu tường minh

Nếu chúng ta muốn gán 1 giá trị của kiểu dữ liệu lớn sang kiểu dữ liệu nhỏ hơn chúng ta phải ép kiểu về kiểu dữ liệu nhỏ hơn.

Double -> Float -> Long -> Int - Short -> Byte
class Test 
{ 
    public static void main(String[] args) 
    { 
        double d = 100.04;  
          
        //explicit type casting 
        long l = (long)d; 
          
        //explicit type casting  
        int i = (int)l;  
        System.out.println("Double value "+d); 
          
        //fractional part lost 
        System.out.println("Long value "+l);  
          
        //fractional part lost 
        System.out.println("Int value "+i);  
    }  
}

Phép toán tự động ép kiểu

Khi thực hiện các phép toán các giá trị trung gian có thể vượt quá phạm vi toán hạng, do đó java sẽ tự động ép kiểu:

  • Java sẽ tự động ép kiểu byte, short, char sang int khi tính toán.
  • Nếu kết quả là long, double, hoặc float thì toàn bộ biểu thức sẽ được ép kiểu sang long, double hoặc float tương ứng.
class Test
{
    public static void main(String args[])
    {
        byte b = 42;
        char c = 'a';
        short s = 1024;
        int i = 50000;
        float f = 5.67f;
        double d = .1234;

        // The Expression 
        double result = (f * b) + (i / c) - (d * s);

        //Result after all the promotions are done 
        System.out.println("result = " + result);
    }
}

Ép kiểu tường minh cho phép toán

Khi thực hiện các phép toán kết quả sẽ tự động ép kiểu sang kiểu dữ liệu lớn hơn, nhưng nếu kết quả là kiểu dữ liệu nhỏ hơn thì chúng ta bắt buộc phép ép kiểu dữ kiệu của kết quả xuống.

class Test
{
    public static void main(String args[])
    {
        byte b = 50;

        //type casting int to byte
        b = (byte)(b * 2.343d);
        System.out.println(b);
    }
}

Nguồn tham khảo

https://www.geeksforgeeks.org/type-conversion-java-examples/

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x