Java có intphải luôn luôn và ở mọi nơi là một số nguyên có dấu 32 bit không?
Câu trả lời:
Có, nó được định nghĩa trong Đặc tả ngôn ngữ Java .
Từ Phần 4.2: Các kiểu và Giá trị Nguyên thủy :
Các loại không thể thiếu được
byte,short,int, vàlong, có giá trị là 8-bit, 16-bit, 32-bit và 64-bit ký two's-bổ sung số nguyên, tương ứng, vàchar, có giá trị được 16-bit số nguyên unsigned đại diện đang UTF-16 đơn vị (§3.1).
Và bổ sung từ Phần 4.2.1: Các kiểu và giá trị tích phân :
Giá trị của loại tích phân là số nguyên trong các khoảng sau:
- Đối với byte, từ -128 đến 127, bao gồm
- Tóm lại, từ -32768 đến 32767, bao gồm
- Đối với int, từ -2147483648 đến 2147483647, bao gồm
- Trong thời gian dài, từ -9223372036854775808 đến 9223372036854775807, bao gồm
- Đối với char, bao gồm từ '\ u0000' đến '\ uffff', nghĩa là từ 0 đến 65535
Java 8 đã bổ sung một số hỗ trợ cho các số nguyên không dấu. Nguyên thủy intvẫn được ký, tuy nhiên một số phương thức sẽ diễn giải chúng là không dấu.
Các phương thức sau đã được thêm vào lớp Integer trong Java 8:
Đây là một ví dụ sử dụng:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
Ngoài ra, nếu độ dài 64 bit không đáp ứng yêu cầu của bạn, hãy thử java.math.BigInteger .
Nó phù hợp cho các trường hợp mà con số vượt quá phạm vi dài 64 bit.
public static void main(String args[]){
String max_long = "9223372036854775807";
String min_long = "-9223372036854775808";
BigInteger b1 = new BigInteger(max_long);
BigInteger b2 = new BigInteger(min_long);
BigInteger sum = b1.add(b1);
BigInteger difference = b2.subtract(b1);
BigInteger product = b1.multiply(b2);
BigInteger quotient = b1.divide(b1);
System.out.println("The sum is: " + sum);
System.out.println("The difference is: " + difference);
System.out.println("The product is: " + product);
System.out.println("The quotient is: " + quotient);
}
Đầu ra là:
Tổng là: 18446744073709551614
Sự khác biệt là: -18446744073709551615
Sản phẩm là: -85070591730234615856620279821087277056
Thương số là: 1
public static final int SIZE = 32;Java 1.5.