java - 为什么可以将double值初始化为单词?
问题描述
例如,类是Car
:
public Car(double speed)
但是你可以初始化它,比如:
Car honda = new Car(speed);
我以为double
是小数?
解决方案
这里有很多误解。
关于这个:
public Car(double speed) { ... } // A
...
Car honda = new Car(speed); // B
为什么可以将double值初始化为单词?
speed
in 语句B
不是“单词” 。(事实上,Java 中没有“word”类型。也许您的意思是String
?但这不是 a 的示例String
。)
事实上,speed
in 声明A
和语句的出现B
都是标识符。在这些上下文中,这些标识符必须是变量的名称。
(它们将是不同speed
的变量。speed
声明中定义的变量A
不会是B
. .)
实际上,new Car(speed)
意思是:“创建一个Car
,将变量的值传递speed
给构造函数”。
我们看不到声明中使用的speed
变量的声明B
。但是,如果代码编译,该speed
变量的类型必须与double
. 类型要么是double
,要么必须可转换为double
使用 Java 语言允许的转换之一。(例如,它可以是一个int
或一个Double
。但不是一个String
!)
现在我们可以这样写:
Car honda = new Car("speed"); // incorrect !
这试图将“速度”一词(表示为 a String
)传递给Car
构造函数。当然是行不通的。Java 不会尝试将字符串转换为数字……而且这个字符串也不是数字。
我以为
double
是小数?
不,它不是十进制的。十进制表示以 10 为底,Javadouble
不是以 10 为底的表示。
实际上,double
是一种原始二进制(base 2)浮点类型。
Java 没有任何原始十进制类型(定点或浮点),但有一个称为 Java SE 的类BigDecimal
,它是不定精度浮点十进制类型。
推荐阅读
- ios - 限制服务器仅响应来自 iOS 应用程序的 HTTP 请求 - 没有用户名和密码
- reactjs - 为什么没有填充 Formik `touched` 属性?
- json - 需要帮助使用 Go 更新 JSON 有效负载
- c# - 在 c# 的自适应卡片中传递提交操作
- css - 如何让 React chartjs 用窗口重新调整大小
- c++ - 为什么我们需要传递 const 共享指针作为引用?
- daml - DAML LookupByKey 和 FetchByKey 需要不同的权限才能运行
- sql - 查询计数 Else 语句值时的 SQL 案例
- java - 如何从第二个控制器类的主控制器类的 textArea 中获取选定的文本?
- python - 可以做些什么来修复 Heroku 的 H10 错误?