Java int总是32位?

将Java的int总是和无处不在是一个32位有符号整数?

是的,它在“Java语言规范”中定义。

从第4.2节:原始types和值 :

整数types是byteshortintlong ,它们的值分别是8位,16位,32位和64位带符号的二进制补码整数, char的值是16位无符号整数代表UTF-16代码单元(§3.1)。

另外从第4.2.1节:积分types和值 :

积分types的值是以下范围的整数:

  • 对于字节,从-128到127(含)
  • 简而言之,从-32768到32767,包括在内
  • 对于int,从-2147483648到2147483647(含)
  • 长期以来,从-9223372036854775808到9223372036854775807,包括在内
  • 对于char,从'\ u0000'到'\ uffff'(含),即从0到65535

int s是32位。 如果你需要更多, long 64位。

作为补充,如果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

Java 8为无符号整数添加了一些支持。原始的int仍然是有符号的,但有些方法会将它们解释为无符号的。

以下方法被添加到Java 8中的Integer类中:

  • compareUnsigned(int x,int y)
  • divideUnsigned(int dividend,int divisor)
  • parseUnsignedInt(String s)
  • parseUnsignedInt(String s,int radix)
  • remainingUnsigned(int dividend,int divisor)
  • toUnsignedLong(int x)
  • toUnsignedString(int i)
  • toUnsignedString(int i,int radix)

以下是一个示例用法:

 public static void main(String[] args) { int uint = Integer.parseUnsignedInt("4294967295"); System.out.println(uint); // -1 System.out.println(Integer.toUnsignedString(uint)); // 4294967295 }