Sự khác nhau giữa int và Integer trong Java

Trong Java, int là một kiểu dữ liệu nguyên thuỷ trong khi Integer là một wrapper class của nó.

  • int, là một kiểu dữ liệu nguyên thủy do vậy chúng ta chỉ có thể lưu trữ giá trị nhị phân của một số nguyên trong đó.
  • Vì Integer là một wrapper class cho kiểu dữ liệu int cho phép lưu trữ, chuyển đổi một số kiểu int linh hoạt hơn. Ngoài ra Integer còn cung cấp một số method cho phép thao tác trên các số nguyên tiện lợi hơn.
// Hợp lệ
int n = 20;
//Hợp lệ
Integer n = 45;

// Hợp lệ
Integer.parseInt("10");
// Không hợp lệ
int.parseInt("10");

Một số số điểm khác biệt giữa int – Integer

Chuyển đổi String sang số nguyên

Chúng ta không thể chuyển đổi một String chỉ chứa các chữ số nguyên sang kiểu dữ liệu int, nhưng có thể chuyển đổi nó sang Integer hoặc int thông qua một số hàm dựng sẵn của Integer class.

Integer a = new Integer("123"); 

int b = Integer.parseInt("123"); 

Chuyển đổi sang các hệ số khác

Chúng ta có thể chuyển đổi trực tiếp một giá trị số nguyên được lưu trữ trong lớp Integer sang định dạng Binary, Octal hoặc Hexadecimal bằng cách sử dụng toBinaryString(), toOctalString() hoặc toHexString() tương ứng. Điều này không thể xảy ra trong một biến kiểu int.

public class Main { 
    public static void main(String args[]) 
    { 
        String bin = Integer.toBinaryString(123); 
        String oct = Integer.toOctalString(123); 
        String hex = Integer.toHexString(123); 
        System.out.print(bin + "\n" + oct + "\n" + hex); 
    } 
} 

Output

1111011
173
7b

Thao tác dữ liệu

Lớp Integer cũng cho phép chúng ta đảo ngược số của chúng ta hoặc xoay nó sang trái hoặc phải bằng cách sử dụng reverse (), rotateLeft() và rotateRight() tương ứng. Chúng ta cần xác định logic của riêng mình để thực hiện các hoạt động này trên một biến int vì nó không phải là một lớp có sẵn.

public class Main { 
    public static void main(String args[]) 
    { 
        // mainethods convert integer to its binary form, 
        // apply the desired operation  
        // and then returns the decimal form 
        // of the newly formed binary number 
        // (12)10->(1100)2 ->  
        // rotate left by 2 units -> (110000)2->(48)10 
        int rL = Integer.rotateLeft(12, 2); 
  
        // (12)10->(1100)2 ->  
        // rotate right by 2 units -> (0011)2->(3)10 
        int rR = Integer.rotateRight(12, 2); 
  
        //(12)10 -> (00000000000000000000000000001100)2  
        // -> reverse ->(00110000000000000000000000000000)2 
        // -> (805306368)10 
          
        // int is of 32 bits 
        int rev = Integer.reverse(12); 
        System.out.print("Left Rotate : " + rL  
          + "\nRight rotate : " + rR + "\nReverse : " + rev); 
    } 
} 

Output

Left Rotate : 48
Right rotate : 3
Reverse : 805306368

Linh hoạt

Integer class cung cấp cho chúng ta sự linh hoạt hơn đối với kiểu dữ liệu int hiện có. Chúng ta có thể thực hiện nhiều phép toán trên một giá trị int bên cạnh các toán tử được xác định trước. Lớp Integer được sử dụng khi chúng ta cần xử lý một biến int như một đối tượng. Vì các lớp Wrapper kế thừa lớp Object, chúng có thể được sử dụng trong các collection như ArrayList, Set, Map v.v

Kể từ Java 5, chúng ta có khái niệm về auto-boxing trong đó một kiểu dữ liệu nguyên thủy được chuyển đổi thành một lớp wrapper và ngược lại một cách tự động. Do đó, chúng ta có thể thực hiện bất kỳ phép toán số học hoặc logic nào giữa bất kỳ kiểu dữ liệu nguyên thủy nào và bất kỳ lớp Wrapper nào.

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