Integer.valueOf() 静态函数

Integer.valueOf() static function

 Integer b = Integer.valueOf("444",8);
 System.out.println(b);

为什么b=292这个静态函数我看不懂

以及何时

 b=Integer.valueOf("444",16);
 System.out.println(b)

为什么 b=1092 我感谢您的帮助 提前致谢

您提供的基数为八进制和六进制,因此您将根据所提供的基数获得输出:

static Integer valueOf(String s, int radix)

根据 java 文档 Integer.valueOf:

Returns an Integer object holding the value extracted from the specified String when parsed with the radix given by the second argument. The first argument is interpreted as representing a signed integer in the radix specified by the second argument, exactly as if the arguments were given to the parseInt(java.lang.String, int) method. The result is an Integer object that represents the integer value specified by the string.

因为 8 进制的 444 = 10 进制的 292 和 16 进制的 444 = 10 进制的 1092。

像往常一样叹息 文档在那里阅读。 http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#valueOf%28java.lang.String,%20int%29

Returns an Integer object holding the value extracted from the specified String when parsed with the radix given by the second argument.

这意味着,如果您将 16 作为第二个参数传递,该数字将被解释为十六进制数,因此:4 * 16 ^ 2 + 4 * 16 + 4 = 1092。与八进制相同,但基数为 8 .

"444" 是字符串,16 被称为基数,需要注意的是十进制是默认基数。

现在基数是参数的当前基数,在这种情况下它是 16,即十六进制,需要转换为默认值,即十进制,所以 444(十六进制)转十进制为 1092.