首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型转换和上/下转换在继承中的区别[Java]?

类型转换和上/下转换在继承中的区别[Java]?
EN

Stack Overflow用户
提问于 2021-01-01 04:27:33
回答 2查看 695关注 0票数 3

我们知道以下内容:(编辑20210101_0059 EST)

代码语言:javascript
复制
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下面更新

我改变了路线

代码语言:javascript
复制
double myDouble = myInt; // casting: int to double
// change to >>
double myDouble = (double) myInt; // casting: int to double

因为我想谈谈演员的事。这个错误导致人们开始谈论类型转换而不是铸造。

到目前为止,基于答案,我知道Java语言规范中没有上下转换。我简单地浏览了一下5.5。铸造上下文& 5.5.1。参考型铸造

问题:

那么,到底什么是演员?“铸造”基本上就是“类型转换”吗?

铸造有很多种(/类型转换),对吗?

问题(供确认):

  1. 因此,在超类和子类之间不存在强制转换(即,在两个具有继承关系的类中不存在强制转换),对吗?
  2. 通常,当我们谈论上/下浇铸时,我们使用的是“参考型铸造”。但是在我们的例子中,double myDouble = (double) myInt;没有上下转换。而且,在这两种情况下,铸件(上/下铸造和整双铸造)只是“类型转换”。对吗?
  3. 简言之,它们之间的唯一区别是:

铸造型--铸造的通用术语。

上/下浇铸--一个仅用于“参考类型铸造”的术语,它涉及继承。

铸造“字节短字符整长浮动双”(例如:double myDouble = (double) myInt;) -(只是一种不同类型的铸造,而不是在“参考类型铸造”中使用)。

对吗?

EN

回答 2

Stack Overflow用户

发布于 2021-01-01 05:36:11

类型转换是将一个基本数据类型的值赋值给另一个类型时。

根据规范,这是不正确的。规范指定了如下所示的铸造操作者

代码语言:javascript
复制
(some type) some expression

例如:

代码语言:javascript
复制
(float)someDouble

规范还指定这是一个铸造语境

W3Schools所说的“类型转换”,规范称之为“转换”。转换发生在上下文中。所谓“上播”和“下播”,W3Schools的意思可能是“扩大转换”和“缩小转换”。

这是:

代码语言:javascript
复制
double myDouble = myInt;

是从intdouble (多个拓宽本原转换之一)的转换,发生在赋值上下文中。没有演员参与。

将其与实际演员进行比较:

代码语言:javascript
复制
(float)myDouble

这是从doublefloat (许多收缩本原变换之一)的转换,这种转换发生在强制转换上下文中。

不,像intdoublefloat等原始类型不能继承任何东西。这些原始转换是规范中的“硬编码”/mandated,而不是"intdouble继承“或诸如此类的结果。

票数 2
EN

Stack Overflow用户

发布于 2021-01-01 05:17:51

类型转换是将一个基本数据类型的值赋值给另一个类型时。

通过使用cast操作,铸造是显式的。见语言规范

类型铸造是一个通用术语。特定的情况被描述为向上转换(从子类到超类)或向下转换(超类到子类型),但是这些情况仍然是类型转换。

在表达式中,如

代码语言:javascript
复制
double myDouble = myInt;

没有演员。这是一个类型转换;具体来说是一个扩大的原语转换。

对于引用类型,有一个类似的概念,即扩大转换(从子类型到超级类型),以及收缩转换(从父类型到子类型)。

类型转换可能是隐式的。强制转换是用来显式强制特定转换的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65527270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档