Answers:
我不相信 一旦您想做的比有符号的做大,我认为BigInteger是唯一的方法。
从Java 8开始,支持无符号长(无符号64位)。您可以使用它的方式是:
Long l1 = Long.parseUnsignedLong("17916881237904312345");
要打印它,您不能简单地打印l1,但必须首先:
String l1Str = Long.toUnsignedString(l1)
然后
System.out.println(l1Str);
Long ul1 = Long.parseUnsignedLong(objScannerInstance.next("\\d+"));
不是很优雅,因为它没有范围检查,但是它允许您输入长数字输入,否则可能超出有符号长范围。(利用也Scanner::next(...)
可以接受Pattern对象或String模式的事实。)
不,没有。您将必须使用原始long
数据类型并处理签名问题,或使用诸如之类的类BigInteger
。
不,没有。Java的设计师记录在案,表示他们不喜欢unsigned int。请改用BigInteger。有关详细信息,请参见此问题。
Java 8提供了一组无符号的long操作,使您可以将那些Long变量直接视为unsigned long,这是一些常用的变量:
有符号和无符号long的加法,减法和乘法相同。