【问题标题】:Integer.valueOf() static functionInteger.valueOf() 静态函数
【发布时间】: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₁₆有区别吗?

标签: java integer value-of


【解决方案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 是你的最后一个值 ;)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-20
        相关资源
        最近更新 更多