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教程的同时做一些练习。每当我学习一门编程语言时,我都会从一开始就阅读一本教程或书籍。在需要理解构造函数调用之前,应该先了解标识符及其声明。