我试图通过查看C ++类来编写Java中的一些东西。在我们的C ++类中,我们有一个变量声明 -
static constexpr uint32_t NUMBER_OF_RECORDS = std::numeric_limits<uint32_t>::max();
如何在Java中编写类似的变量声明?
答案 0 :(得分:4)
http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MAX_VALUE
Integer.MAX_VALUE
Integer
是基本类型int
的包装类。
答案 1 :(得分:3)
我相信你正在寻找类似的东西:
static final int NUMBER_OF_RECORDS = Integer.MAX_VALUE;
在Java中,所有Integers
都已签名。如果需要表示无符号整数的最大值,则需要使用Long
。但是,Long
可以表示比无符号整数更大的值。
unsigned integer
可以表示2^32 - 1
的最大值
signed integer
可以表示2^31 - 1
的最大值
long
(在java中)可以表示最大值2^63 - 1
您可以在此处找到java和其他语言的完整数据类型图表:Integer (Computer Science)
如果你真的需要无符号整数的最大值,你可以这样做(其中包括)
static final long NUMBER_OF_RECORDS = (long)Math.pow(2, 32) - 1;
答案 2 :(得分:3)
static final int NUMBER_OF_RECORDS = Integer.MAX_VALUE;
不同的是,在Java中,int
已签名(然后是int32_t
)
答案 3 :(得分:3)
我相信您可以使用Integer.MAX_VALUE
之类的
public static final int NUMBER_OF_RECORDS = Integer.MAX_VALUE;
答案 4 :(得分:1)
您有足够的Integer.MAX_VALUE
个答案。如果您需要C ++片段中的实际值,则需要使用64位JAVA long
,因为JAVA中没有无符号整数。
然后你的代码将是:
static final long NUMBER_OF_RECORDS = 0xffffffffl;
(注意long
文字末尾的'l'
这与获取数字限制不同,但如果您想要移植C ++库并保留完整功能,则可能是必要的。