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

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

什么时候

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

为什么 b=1092 感谢您的帮助 在此先感谢

4

4 回答 4

3

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

当使用第二个参数给出的基数进行解析时,返回一个 Integer 对象,该对象包含从指定 String 中提取的值。

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

于 2015-08-17T13:29:07.267 回答
2

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

static Integer valueOf(String s, int radix)

根据 java 文档Integer.valueOf

当使用第二个参数给出的基数进行解析时,返回一个 Integer 对象,该对象包含从指定 String 中提取的值。第一个参数被解释为表示由第二个参数指定的基数中的有符号整数,就像将参数提供给 parseInt(java.lang.String, int) 方法一样。结果是一个表示字符串指定的整数值的 Integer 对象。

于 2015-08-17T13:26:13.377 回答
1

因为基数 8 中的 444 = 基数 10 中的 292 和基数 16 中的 444 = 基数 10 中的 1092。

于 2015-08-17T13:27:33.717 回答
0

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

现在基数是本例中参数的当前基数,它的 16 即十六进制需要转换为默认值,即十进制,因此 444(十六进制)到十进制是 1092。

于 2016-10-14T18:20:22.937 回答