Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中(80,8)与toString(80,8)的值_Java_Tostring_Value Of - Fatal编程技术网

Java中(80,8)与toString(80,8)的值

Java中(80,8)与toString(80,8)的值,java,tostring,value-of,Java,Tostring,Value Of,我有几个问题与这些包装类的方法有关 首先,为什么方法Long(或Integer)在valueOf方法中使用字符串作为参数?而是在toString方法中使用一个数值原语?(见以下示例) 其次,为什么下面列出的第二行代码不起作用(通过将字符串作为第一个参数),而第一行工作正常(通过将long(或int)作为第一个参数) 这两种方法都应该分别以字符串和长类型返回第一个参数中所述值的值,并将其转换为第二个参数中指定的基数(在本例中为8) 考虑到让多个方法做同一件事是没有意义的,不同的方法用不同的参数做不

我有几个问题与这些包装类的方法有关

首先,为什么方法Long(或Integer)在valueOf方法中使用字符串作为参数?而是在toString方法中使用一个数值原语?(见以下示例)

其次,为什么下面列出的第二行代码不起作用(通过将字符串作为第一个参数),而第一行工作正常(通过将long(或int)作为第一个参数)

这两种方法都应该分别以字符串和长类型返回第一个参数中所述值的值,并将其转换为第二个参数中指定的基数(在本例中为8)


考虑到让多个方法做同一件事是没有意义的,不同的方法用不同的参数做不同的事情是合乎逻辑的,一点也不奇怪

首先,为什么方法Long(或Integer)在valueOf方法中使用字符串作为参数

因此,它可以解析字符串,并按照文档说明为您提供一个
Long
Integer

而是在toString方法中使用一个数值原语

valueOf将字符串转换为对象,toString获取一个值并将其转换为字符串。考虑到它们所做的几乎是相反的事情,你会认为它们是相反的

其次,为什么下面列出的第一行代码不起作用(通过将字符串作为第一个参数),而第二行可以起作用(通过将long(或int)作为第一个参数)

80
是可以转换为八进制数的有效十进制数
80
不是有效的八进制(或二进制),因此无法将其作为八进制进行分析

  • 这些方法分别从和转换为
    字符串
    表示。你会期待什么

  • 第一行代码调用的方法不采用
    字符串
    参数。它转换为
    字符串
    ,那么为什么要输入它呢?这是输出


  • “80”不是有效的八进制数。8不是八进制数字。值8是“10”。

    实际上两种方法都是绑定的:

    /** 
     * Returns the string representation of the <code>long</code> argument. 
     * <p> 
     * The representation is exactly the one returned by the 
     * <code>Long.toString</code> method of one argument. 
     * 
     * @param   l   a <code>long</code>. 
     * @return  a string representation of the <code>long</code> argument. 
     * @see     java.lang.Long#toString(long) 
     */ 
    public static String valueOf(long l) { 
        return Long.toString(l, 10); 
    }
    
    似乎
    Long.toString()
    将Long作为第一个参数,请参见上面的代码

    Long.valueOf(String,int)
    将字符串转换为
    Long

    Long.toString(Long.int)
    Long
    转换为字符串

    这两个函数都采用用于转换的基数


    我建议看一下和的JavaDoc。文档很棒,解释得很好。

    NumberFormatException不是编译错误。你是对的,80不是一个有效的八进制数。因为这些方法本质上是彼此相反的?@SeanOwen yep纠正了它我粘贴错误了OK我通过以下测试了解了错误:Long l1=Long.valueOf(“70”,8);字符串s1=长.toString(70,8);系统输出打印LN(l1+“”+s1);我看到它实际上以两种不同的方式处理这些信息。现在它有意义了。谢谢你的及时回复。
    /** 
     * Returns the string representation of the <code>long</code> argument. 
     * <p> 
     * The representation is exactly the one returned by the 
     * <code>Long.toString</code> method of one argument. 
     * 
     * @param   l   a <code>long</code>. 
     * @return  a string representation of the <code>long</code> argument. 
     * @see     java.lang.Long#toString(long) 
     */ 
    public static String valueOf(long l) { 
        return Long.toString(l, 10); 
    }