Java中(80,8)与toString(80,8)的值
我有几个问题与这些包装类的方法有关 首先,为什么方法Long(或Integer)在valueOf方法中使用字符串作为参数?而是在toString方法中使用一个数值原语?(见以下示例) 其次,为什么下面列出的第二行代码不起作用(通过将字符串作为第一个参数),而第一行工作正常(通过将long(或int)作为第一个参数) 这两种方法都应该分别以字符串和长类型返回第一个参数中所述值的值,并将其转换为第二个参数中指定的基数(在本例中为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方法中使用字符串作为参数 因此,它可以解析字符串,并按照文档说明为您提供一个
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);
}