为什么将双精度值初始化为单词?

问题描述 投票:-1回答:1

例如,类别为Car

public Car(double speed)

但是您可以初始化它,例如:

Car honda = new Car(speed);

我以为double是十进制?

java class constructor initialization double
1个回答
0
投票

这里有很多误解。

关于此:

  public Car(double speed) { ... }  // A
  ...
  Car honda = new Car(speed); // B

为什么将双精度值初始化为单词?

speed语句中的B不是“单词”。 (实际上,Java中没有“单词”类型。也许您的意思是String?但这也不是String的示例。)

实际上,在声明speed和语句A中出现B标识符。在这些情况下,这些标识符必须是variables的名称。

((它们将是不同的speed变量。在声明speed中定义的A变量将不是B中使用的变量。可以。在Java中,相同的名称可以只要在相应的上下文中声明了名称,就可以用于不同的事物。)

实际上,new Car(speed)的意思是:“创建Car,将speed变量的传递给构造函数”。

我们看不到在语句speed中使用的B变量的声明。但是,如果代码编译,则该speed变量的类型必须与double兼容。类型为double,或者必须使用Java语言允许的转换之一将其转换为double。 (例如,可以是intDouble。但不能是String!)

现在我们可以这样写:

Car honda = new Car("speed");   // incorrect !

这试图将单词“ speed”(表示为String)传递给Car构造函数。当然不会。 Java不会尝试将字符串转换为数字...而且该字符串也并非数字。


我以为double是十进制?

没有不是十进制。十进制表示以10为底,而Java double并非以10为底的表示形式。

实际上,double是原始二进制(基数2)浮点类型。

Java没有任何原始十进制类型(固定点或浮点数,但是有一个名为BigDecimal的类,它是不确定精度的浮点十进制类型。

© www.soinside.com 2019 - 2024. All rights reserved.