Integer class là một wrapper class của kiểu dữ liệu nguyên thủy int chứa nhiều method chúng ta thao tác hiệu quả hơn như chuyển số sang chuỗi và ngược lại etc.
Constructor
Khởi tạo một object Integer từ một số kiểu int.
public Integer(int b); // Ví dụ Integer i = new Integer(1);
Khởi tạo một object Integer từ chuỗi số
public Integer(String s) // Ví dụ Integer i = new Integer("123") Integer i = new Integer("12a") => NumberFormatException
Lưu ý nếu String không phải là một số nguyên thì chúng ta sẽ bị lỗi NumberFormatException.
Số Integer lớn nhất – bé nhất
Integer class còn cung cấp cho chúng ta 2 hằng số mà được sử dụng nhiều khi thao tác với kiểu dữ liệu int là giá trị lớn nhất và bé nhất.
Giá trị lớn nhất: Integer.MAX_VALUE (2147483647).
Giá trị bé nhất: Integer.MIN_VALUE (-2147483648)
Methods trong Integer class
Integer class thừa kế từ Number class nên ngoài các method intValue(), longValue(), doubleValue() etc thì Integer class còn cung cấp cho chúng ta rất nhiều method. Sau đây mình sẽ liệt kê một số method mà mình thường sử dụng trong quá trình code java:
1, toString(): Trả về String số tương ứng với giá trị int.
Syntax
public String toString()
Example
Integer number = new Integer(10); System.out.println(number.toString()); // 10
2, toHexString(): Trả về String tương ứng với giá trị int ở hệ hexadecimal.
Syntax
public static String toHexString(int num)
Example
System.out.println(Integer.toHexString(100)); // 64
3, toOctalString(): Trả về chuỗi số tương ứng ở hệ octal
Syntax
public static String toOctalString(int i);
Example
System.out.println(Integer.toOctalString(100)); // 144
4, toBinaryString(): Trả về chuỗi số tương ứng ở hệ nhị phân.
Syntax
public static String toBinaryString(int i)
Example
System.out.println(Integer.toBinaryString(100)); // 1100100
5, valueOf(): Khởi tạo một object Integer từ giá trị int cung cấp. Nếu giá trị cung cấp không hợp lệ thì sẽ gây ra lỗi NumberFormatException.
Syntax
public static Integer valueOf(int i) // or public static Integer valueOf(String s) // or public static Integer valueOf(String s, int radix) throws NumberFormatException
Example
System.out.println(Integer.valueOf("100")); // 100 System.out.println(Integer.valueOf(100)); // 100 System.out.println(Integer.valueOf("01000000", 2)); // 64 System.out.println(Integer.valueOf("aaa")); // NumberFormatException
6, parseInt(): Trả về int value từ một chuỗi số được cung cấp. Nếu giá trị được cung cấp không hợp lệ gây ra lỗi NumberFormatException.
Syntax
public static int parseInt(String s) // or public static int parseInt(String s, int radix)
Example
System.out.println(Integer.parseInt("100")); // 100 System.out.println(Integer.parseInt("11110111", 2)); // 247 System.out.println(Integer.parseInt("aaa")); // NumberFormatException
7, equals(): So sánh bằng giữa 2 object Integer.
Syntax
public boolean equals(Object obj)
Example
Integer a = Integer.valueOf(100); Integer b = Integer.valueOf(90); Integer c = Integer.valueOf(100); System.out.println(a.equals(b)); // false System.out.println(a.equals(c)); // true
8, compareTo(): So sánh 2 object Integer. Trả về -1 nếu nhỏ hơn, 1 lớn hơn, 0 bằng.
Syntax
public int compareTo(Integer anotherInteger)
Example
Integer a = Integer.valueOf(100); Integer b = Integer.valueOf(90); Integer c = Integer.valueOf(100); System.out.println(a.compareTo(b)); // 1 System.out.println(b.compareTo(a)); // -1 System.out.println(a.compareTo(c)); // 0
9, max(): Lấy số lớn nhất trong 2 số, nếu 2 số trùng nhau thì trả về một trong hai.
Syntax
public static int max(int a, int b)
Example
System.out.println(Integer.max(100, 90)); // 100 System.out.println(Integer.max(100, 100)); // 100
10, min(): Lấy số nhỏ nhất trong hai số, nếu 2 số bằng nhau lấy một trong hai.
Syntax
public static int min(int a, int b)
Example
System.out.println(Integer.min(100, 90)); // 90 System.out.println(Integer.min(100, 100)); // 100
11, sum(): Trả về tổng của 2 số nguyên.
Syntax
public static int sum(int a, int b)
Example
System.out.println(Integer.sum(100, 90)); // 190
Abstract method
Ngoài các method trên thì Integer class cũng implement các method của Number abstract class. Các method này sẽ giúp chúng ta chuyển giá trị kiểu int sang các kiểu dữ liệu khác như double, float, long để thao tác:
- public byte byteValue(): Trả về byte tương ứng của Integer object.
- public short shortValue(): Trả về short value tương ứng của Integer object.
- public int intValue(): Trả về int value tương ứng của Integer object.
- public long longValue(): Trả về long value tương ứng của Integer object.
- public double doubleValue(): Trả về double value tương ứng của Integer object.
- public float shortValue(): Trả về float value tương ứng của Integer object.
Ví dụ
public class Main { public static void main(String[] args) { Integer i = Integer.valueOf(1000); System.out.println("Byte value: " + i.byteValue()); System.out.println("Short value: " + i.shortValue()); System.out.println("Int value: " + i.intValue()); System.out.println("Long value: " + i.longValue()); System.out.println("Double value " + i.doubleValue()); System.out.println("Float value: " + i.floatValue()); double a = 5.5d; double d = i.doubleValue()/a; System.out.println(d); float b = 5.5f; float f = i.floatValue()/b; System.out.println(f); } }
Output
Byte value: -24
Short value: 1000
Int value: 1000
Long value: 1000
Double value 1000.0
Float value: 1000.0
181.8181818181818
181.81818
Với rất nhiều method mà Integer class cung cấp giúp chúng ta thao tác nhanh chóng với kiểu số nguyên int trong java. Thế nhưng không phải lúc nào cũng dùng Integer class thay cho kiểu int nguyên thuỷ đâu nhé.
for(Integer i = 0; i <= 100; i++) { System.out.println(i); }
Ví dụ trên mình chỉ đang duyệt và in ra các số nguyên từ 0 đến 100. Việc mình dùng Integer là không hợp lý vì mục đích của mình sử dụng biến i như là một biến đếm, nếu chúng ta sử dụng Integer object thì java phải sử dụng cơ chế autoboxing, unboxing để chuyển đổi qua lại Integer với int, hơn nữa với object Integer tạo thì chắc hẳn nó sẽ ngốn bộ nhớ hơn đấy.
Theo kinh nghiệm sử dụng int hay Integer của mình rất đơn giản, nếu thấy cần dùng đến method của instance lưu ý điểm này nhé không phải static method thì mình sẽ dùng Integer.