java在变量声明中使用double vs double
我试图用d
声明为double
而不是Double
来创建这个程序,你能告诉我为什么这个程序不运行吗。它不是应该被自动包装和拆封吗,就像原始数据类型的装箱和拆箱一样?
顺便说一句——我对Java不太熟悉,我不记得它的实际名称,但我在某个地方读到过,这被称为基本类型的装箱和拆箱,以便在它们上运行方法
public class ToStringDemo {
public static void main(String[] args) {
double d = 858.48;
String s = d.toString();
int dot = s.indexOf('.');
System.out.println(dot + " digits " +
"before decimal point.");
System.out.println( (s.length() - dot - 1) +
" digits after decimal point.");
}
}
注-以上程序在String s = d.toString();
处给出错误
# 1 楼答案
d.toString();将无法工作,因为d是基元类型。你可以打电话。toString函数仅适用于对象。因此,如果您使用Double,这是一个对象,而不是原语,那么您的代码将正常工作。这与自动装箱无关
# 2 楼答案
不能对
double
等基本类型调用方法,而可以对Double
等包装类型调用方法。这就是你给出的代码不起作用的原因拳击确实会自动发生——但只有当你有效地为它设定了转化的目标时。例如,您可以使用:
。。。但是,如果没有在代码中提到,到
Double
的中间转换就不会发生。当然,你仍然可以在一行中完成:要将值转换为字符串,您根本不需要使用方框,请注意:
。。。这两种方法都有效