我们知道以下内容:(编辑20210101_0059 EST)
public class Main {
public static void main(String[] args) {
int myInt = 9;
double myDouble = (double) myInt; // casting: int to double
}
}类型转换是将一个基本数据类型的值赋值给另一个类型时。加宽转换(自动)-将较小的类型转换为较大的类型字节->短-> char -> int -> long -> float -> double casting.asp
问题:
类型铸造和上/下浇铸有什么区别?类型铸造是如何工作的?
在这个例子中是向上推演吗?如果是这样的话,这是否意味着整数继承自双?(我不这么认为)
在20210101_0059~0154 EST下面更新
我改变了路线
double myDouble = myInt; // casting: int to double
// change to >>
double myDouble = (double) myInt; // casting: int to double因为我想谈谈演员的事。这个错误导致人们开始谈论类型转换而不是铸造。
到目前为止,基于答案,我知道Java语言规范中没有上下转换。我简单地浏览了一下5.5。铸造上下文& 5.5.1。参考型铸造
问题:
那么,到底什么是演员?“铸造”基本上就是“类型转换”吗?
铸造有很多种(/类型转换),对吗?
问题(供确认):
double myDouble = (double) myInt;没有上下转换。而且,在这两种情况下,铸件(上/下铸造和整双铸造)只是“类型转换”。对吗?铸造型--铸造的通用术语。
上/下浇铸--一个仅用于“参考类型铸造”的术语,它涉及继承。
铸造“字节短字符整长浮动双”(例如:double myDouble = (double) myInt;) -(只是一种不同类型的铸造,而不是在“参考类型铸造”中使用)。
对吗?
发布于 2021-01-01 05:36:11
类型转换是将一个基本数据类型的值赋值给另一个类型时。
根据规范,这是不正确的。规范指定了如下所示的铸造操作者:
(some type) some expression例如:
(float)someDouble规范还指定这是一个铸造语境。
W3Schools所说的“类型转换”,规范称之为“转换”。转换发生在上下文中。所谓“上播”和“下播”,W3Schools的意思可能是“扩大转换”和“缩小转换”。
这是:
double myDouble = myInt;是从int到double (多个拓宽本原转换之一)的转换,发生在赋值上下文中。没有演员参与。
将其与实际演员进行比较:
(float)myDouble这是从double到float (许多收缩本原变换之一)的转换,这种转换发生在强制转换上下文中。
不,像int、double、float等原始类型不能继承任何东西。这些原始转换是规范中的“硬编码”/mandated,而不是"int从double继承“或诸如此类的结果。
https://stackoverflow.com/questions/65527270
复制相似问题