Java的int
总是和任何地方都是32位有符号整数吗?
答案 0 :(得分:117)
是的,它在The Java Language Specification中定义。
来自Section 4.2: Primitive Types and Values:
整数类型为
byte
,short
,int
和long
,其值为8位, 16位,32位和64位签名 二进制补码整数 分别和char
,其值 是16位无符号整数 代表UTF-16代码单元(§3.1)。
另外还有Section 4.2.1: Integral Types and Values:
整数类型的值是 以下范围内的整数:
- 对于字节,从-128到127,包括
- 简而言之,从-32768到32767,包括
- 对于int,从-2147483648到2147483647,包括
- 长期,从-9223372036854775808到9223372036854775807,包括在内
- 对于char,从'\ u0000'到'\ uffff'(含),即从0到65535
答案 1 :(得分:7)
int
是32位。如果您需要更多,long
s是64位。
答案 2 :(得分:4)
Java 8为无符号整数添加了一些支持。原始int
仍然是有符号的,但有些方法会将它们解释为无符号。
以下方法已添加到Java 8中的Integer class:
以下是一个示例用法:
public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
答案 3 :(得分:3)
作为补充,如果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