[英]Is a Java int always 32 bits?
Java 的int
始終和任何地方都是 32 位有符號整數嗎?
是的,它在The Java Language Specification 中定義。
整數類型是
byte
、short
、int
和long
,它們的值分別是 8 位、16 位、32 位和 64 位有符號二進制補碼整數,以及char
,它們的值是 16 位無符號整數表示 UTF-16 代碼單元(第 3.1 節)。
另外來自第 4.2.1 節:積分類型和值:
整數類型的值是以下范圍內的整數:
- 對於字節,從 -128 到 127,包括
- 簡而言之,從-32768到32767,包括
- 對於 int,從 -2147483648 到 2147483647(含)
- 長期,從-9223372036854775808到9223372036854775807,含
- 對於char,從'\ '到'\'包含,即0到65535
int
是 32 位。 如果您需要更多, long
是 64 位。
Java 8 添加了對無符號整數的一些支持。原始int
仍然是有符號的,但是有些方法會將它們解釋為無符號。
Java 8 中的Integer 類添加了以下方法:
這是一個示例用法:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
作為補充,如果 64 位長不符合您的要求,請嘗試java.math.BigInteger 。
它適用於數字超出 64 位長度范圍的情況。
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);
}
輸出是:
總和為:18446744073709551614
區別是:-18446744073709551615
產品為:-85070591730234615856620279821087277056
商為:1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.