我如何用Java中的C ++表示numeric_limits?

时间:2014-10-16 23:12:05

标签: java c++

我试图通过查看C ++类来编写Java中的一些东西。在我们的C ++类中,我们有一个变量声明 -

static constexpr uint32_t NUMBER_OF_RECORDS = std::numeric_limits<uint32_t>::max();

如何在Java中编写类似的变量声明?

5 个答案:

答案 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)

使用Integer.MAX_VALUE

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 ++库并保留完整功能,则可能是必要的。