Integer.valueOf() 静态函数
Posted
技术标签:
【中文标题】Integer.valueOf() 静态函数【英文标题】:Integer.valueOf() static function 【发布时间】:2015-11-10 03:53:24 【问题描述】: Integer b = Integer.valueOf("444",8);
System.out.println(b);
为什么 b=292 我看不懂这个静态函数
什么时候
b=Integer.valueOf("444",16);
System.out.println(b)
为什么 b=1092 我感谢您的帮助 提前致谢
【问题讨论】:
你检查过valueOf(String data, int radix)
的文档吗?
你读过the documentation吗?你明白什么是基数吗? 444₈和444₁₆有区别吗?
【参考方案1】:
“444”是字符串,16被称为基数,需要注意的一点是十进制是默认基数。
现在基数是参数的当前基数,在这种情况下它的 16 即十六进制需要转换为默认值,即十进制所以 444(十六进制)转十进制为 1092。
【讨论】:
【参考方案2】:您将基数提供为八进制和十六进制,因此您将根据提供的基数获得输出:
static Integer valueOf(String s, int radix)
根据java文档Integer.valueOf:
返回一个 Integer 对象,其中包含从 使用第二个给出的 radix 解析时指定的字符串 论据。第一个参数被解释为代表一个有符号的 第二个参数指定的基数中的整数,就像 参数被赋予 parseInt(java.lang.String, int) 方法。结果是一个表示整数的 Integer 对象 字符串指定的值。
【讨论】:
【参考方案3】:像往常一样sigh文档在那里阅读它们。 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。
【讨论】:
【参考方案4】:因为基数 8 中的 444 = 基数 10 中的 292 和基数 16 中的 444 = 基数 10 中的 1092。
【讨论】:
Base 16 是你的最后一个值 ;)以上是关于Integer.valueOf() 静态函数的主要内容,如果未能解决你的问题,请参考以下文章