Integer b = Integer.valueOf("444",8);
System.out.println(b);
为什么b = 292我无法理解这个静态函数
以及何时
b=Integer.valueOf("444",16);
System.out.println(b)
为什么b = 1092 我感谢您的帮助 提前致谢
答案 0 :(得分: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相同。 / p>
答案 1 :(得分:2)
您提供的基数为八进制和六进制,因此您可以根据提供的基数获得输出:
static Integer valueOf(String s, int radix)
根据java文档Integer.valueOf:
返回一个Integer对象,其中包含从中提取的值 使用第二个给出的 radix解析时指定的String 参数 即可。第一个参数被解释为表示已签名 第二个参数指定的基数中的整数,就像是一样 参数被赋予parseInt(java.lang.String,int) 方法。结果是一个表示整数的Integer对象 字符串指定的值。
答案 2 :(得分:1)
因为基数8中的444 =基数10中的292和基数16中的444 =基数10中的1092.
答案 3 :(得分:0)
" 444"是字符串,16被称为基数,需要注意的是十进制是默认基数。
现在基数是参数的当前基数,在这种情况下它的16即十六进制需要转换为默认值,即十进制,所以 444(十六进制)到十进制是1092。