Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以将整数范围转换为2-4十亿_Java_Oracle_Jakarta Ee - Fatal编程技术网

Java 可以将整数范围转换为2-4十亿

Java 可以将整数范围转换为2-4十亿,java,oracle,jakarta-ee,Java,Oracle,Jakarta Ee,通常Java int的范围是-2147483648…2147483647,所以最大值是2147483647,我不想使用负数。一个整数可以有超过40亿个不同的值,我可以使用整数范围2-40亿吗?在eclipse中,我使用int a=31474836471;我得到编译错误。怎么办?不,在Java中,所有数字都是有符号的;没有未签名的数字。如果需要更大范围的整数,请使用。您不能。负值范围可用于ints,因为该值是有符号的。只有这么多的信息可以用位来表示 关于有符号和无符号数字之间的区别,请参见另一个问

通常Java int的范围是-2147483648…2147483647,所以最大值是2147483647,我不想使用负数。一个整数可以有超过40亿个不同的值,我可以使用整数范围2-40亿吗?在eclipse中,我使用int a=31474836471;我得到编译错误。怎么办?

不,在Java中,所有数字都是有符号的;没有未签名的数字。如果需要更大范围的整数,请使用。

您不能。负值范围可用于
int
s,因为该值是有符号的。只有这么多的信息可以用位来表示


关于有符号和无符号数字之间的区别,请参见另一个问题:

您已经在另一个问题中提出了这个问题

答案是否定的,您不能将Java
int
类型设为40亿值>=零

再问同样的问题也不会改变答案


您需要更改程序以将“pk”类型从
int
替换为
long
。您没有其他选择,因为您已经声明键必须大于等于零。

使用长类型变量。。改为使用
long
。您可以始终存储想要的值-2147483648,并在解释值时再次添加它。缺点:算术运算将不再有效。你能打开一个长的吗?EDIT刚刚发现你不能。显然,你不能在
长的
上使用
开关
,但这不是你最初问题的一部分。为什么你需要打开一个长的开关?你真的有几十亿个案例吗?
char
是java
0..65535
@SoulDZIN中唯一的无符号数字类型你就不能试试吗?@DaveNewton-更好的是,他可以在JLS中查找它。