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() 静态函数的主要内容,如果未能解决你的问题,请参考以下文章

静态工厂

Java中Integer.parseInt和Integer.valueOf,你还傻傻分不清吗?

java 类型转化

“非静态”的不同术语是啥?

java --整形字符串转化

常用类