Java 为什么可以将双精度值初始化为单词?
例如,该类为Java 为什么可以将双精度值初始化为单词?,java,class,constructor,initialization,double,Java,Class,Constructor,Initialization,Double,例如,该类为Car: public Car(double speed) 但您可以对其进行初始化,如: Car honda = new Car(speed); 我以为双精度是十进制的?这里有很多误解 关于这一点: public Car(double speed) { ... } // A ... Car honda = new Car(speed); // B 为什么可以将双精度值初始化为单词 语句B中的speed不是一个“单词”。(事实上,Java中没有“word”类型。也许
Car
:
public Car(double speed)
但您可以对其进行初始化,如:
Car honda = new Car(speed);
我以为双精度是十进制的?这里有很多误解 关于这一点:
public Car(double speed) { ... } // A
...
Car honda = new Car(speed); // B
为什么可以将双精度值初始化为单词
语句B
中的speed
不是一个“单词”。(事实上,Java中没有“word”类型。也许您指的是String
?但这也不是String
的示例。)
事实上,在声明A
和语句B
中出现的speed
都是标识符。在这些上下文中,这些标识符必须是变量的名称
(它们将是不同的speed
变量。声明a
中定义的speed
变量将不是B
中使用的变量。这没关系。在Java中,相同的名称可以用于不同的事情,前提是在各自的上下文中声明名称。)
实际上,新车(速度)
的意思是:“创建一辆车
,将速度
变量的值传递给构造函数”
我们无法看到语句B
中使用的speed
变量的声明。但是,如果代码已编译,则speed
变量的类型必须与double
兼容。该类型要么是double
,要么必须使用Java语言允许的转换之一转换为double
。(例如,它可以是int
或Double
,但不能是字符串
!)
现在我们可以这样写:
Car honda = new Car("speed"); // incorrect !
这试图将单词“speed”(表示为字符串
)传递给Car
构造函数。当然不行了。Java不会尝试将字符串转换为数字。。。这个字符串不是一个数字
我以为双精度是十进制 不,它不是十进制的。十进制表示以10为基数,Java
double
不是以10为基数的表示形式
实际上,double
是一种基本的二进制(基2)浮点类型
Java没有任何基本的十进制类型(定点或浮点),但有一个名为
BigDecimal
的Java SE类,它是一种不定精度的浮点十进制类型。speed
可以是double
变量。在这种情况下,您可以使用它来代替double
文本,比如90.25
(想想double speed=90.25;honda=new Car(speed);
)double
是浮点值。这是非常基本的。这里没有“单词”。你的意思可能是“变量”,这也是非常基本的。你需要给我们完整的上下文,最好是。当我将您的初始化粘贴到我的Eclipse(IDE)中时,我发现速度无法解析为变量,这显然不会发生在您身上。我建议您在学习Java教程的同时做一些练习。每当我学习一门编程语言时,我都会从一开始就阅读一本教程或书籍。在需要理解构造函数调用之前,应该先了解标识符及其声明。