我尝试了以下内容:
public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFF;
但它会导致
The literal 0xFFFFFFFFFFFFFFFF of type int is out of range
答案 0 :(得分:7)
使用0xFFFFFFFFFFFFFFFFl
并且没问题。
另一种方法是简单地使用-1
,因为该值也设置了所有位。有关详细信息,请参阅http://en.wikipedia.org/wiki/Two%27s_complement。
答案 1 :(得分:7)
如果无法将数字表示为int,则需要指定数字的类型。长是L或l(小写)。我更喜欢大写,因为小写很容易误认为是1(一)。
public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFFL;
或者,您可以将值设置为-1,但在传达“所有位1”的含义时可能不太清楚。
答案 2 :(得分:5)
您可以使用以下任一项:
public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFFL;
或
public static final long DEVICE_ID_UNKNOWN = ~0L;
或
public static final long DEVICE_ID_UNKNOWN = -1L;
答案 3 :(得分:3)
获得所有1的另一种方式
public static final long DEVICE_ID_UNKNOWN = ~0L;
答案 4 :(得分:2)
public static final long DEVICE_ID_UNKNOWN = -1L;
答案 5 :(得分:1)
使用public static final long DEVICE_ID_UNKNOWN = 0xFFFFFFFFFFFFFFFFL;
来表示它是一个长值,而不是一个int值。
答案 6 :(得分:1)
抱歉,我不是java
家伙,但不会-1
吗?
答案 7 :(得分:1)
public static final long DEVICE_ID_UNKNOWN = 0xFFFF_FFFF_FFFF_FFFFL;
有用的参考http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html