例如,类别为Car
:
public Car(double speed)
但是您可以初始化它,例如:
Car honda = new Car(speed);
我以为double
是十进制?
这里有很多误解。
关于此:
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
。 (例如,可以是int
或Double
。但不能是String
!)
现在我们可以这样写:
Car honda = new Car("speed"); // incorrect !
这试图将单词“ speed”(表示为String
)传递给Car
构造函数。当然不会。 Java不会尝试将字符串转换为数字...而且该字符串也并非数字。
我以为
double
是十进制?
没有不是十进制。十进制表示以10为底,而Java double
并非以10为底的表示形式。
实际上,double
是原始二进制(基数2)浮点类型。
Java没有任何原始十进制类型(固定点或浮点数,但是有一个名为BigDecimal
的类,它是不确定精度的浮点十进制类型。