Long.decode和Long.parseLong

Tah*_*idi 3 java hex long-integer

在测试中,我看到Long.decode类似于Long.parseLong简单数字格式字符串的工作(我的意思是字符串没有'0x',......).

System.out.println(Long.decode("123") + Long.decode("123"));  // prints  246
System.out.println(Long.parseLong("123") + Long.parseLong("123")); // same as above
Run Code Online (Sandbox Code Playgroud)

我可以用Long.decode而不是在Long.parseLong任何地方吗?如果不是为什么?

rad*_*dar 6

它们将以相似的方式行动,但Long.parseLong返回原语,long同时Long.decode返回一个新Long对象,这需要更多的时间和资源.因此,最好Long.parseLong用于简单的情况.但是,Long.decode提供了更大的灵活性,因为它允许您解码十六进制(例如0xFFFF)或八进制(例如010 == 8)的输入.


Pet*_*rey 6

如果您的数字可能以 0 开头并且您不希望它是八进制,则不能使用 decode()。

例如

Integer.decode("010") == 8 // octal
Integer.parseInt("010") == 10 // always decimal
Run Code Online (Sandbox Code Playgroud)