Java中的int
会永远且无处不在地是一个32位有符号整数吗?
是的,在Java语言规范中有定义。
来自第4.2节:基本类型和值:
整数类型包括
byte
、short
、int
和long
, 它们的值分别为8位、16位、32位和64位带符号 的二进制补码整数, 还有char
,它的值是16位无符号整数, 表示UTF-16代码单元(§3.1)。
此外,还有来自第4.2.1节:整数类型和值的信息:
整数类型的值在以下范围内:
byte
范围为-128至127,含两端short
范围为-32768至32767,含两端int
范围为-2147483648至2147483647,含两端long
范围为-9223372036854775808至9223372036854775807,含两端char
范围为'\u0000'到'\uffff',即0到65535
int
是32位的。如果需要更多,可以使用long
,它是64位的。
int
仍然是有符号的,但是一些方法将会将它们解释为无符号的。public static void main(String[] args) {
int uint = Integer.parseUnsignedInt("4294967295");
System.out.println(uint); // -1
System.out.println(Integer.toUnsignedString(uint)); // 4294967295
}
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
public static final int SIZE = 32;
。 - burnabyRails