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

66bbxpm5  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(502)

我们知道以下内容:(编辑20210101\U 0059 est)

public class Main {
  public static void main(String[] args) {
    int myInt = 9;
    double myDouble = (double) myInt; // casting: int to double 
  }
}

类型转换是指将一个基本数据类型的值赋给另一个类型。
加宽转换(自动)-将较小的类型转换为较大的类型大小byte->short->char->int->long->float->doublehttps://www.w3schools.com/java/java_type_casting.asp
问题:
类型转换和向上/向下转换有什么区别?类型铸造是如何工作的?
在这个例子中是向上投射吗?如果是这样的话,是否意味着整数是从double继承的(我不这么认为)
美国东部时间20210101\ U 0059~0154以下更新
我换线

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个类中),对吗?
2.通常,当我们谈论上/下转换时,我们在“参考类型转换”中使用它。但就我们而言 double myDouble = (double) myInt; 没有上/下转换。而且,在这两种情况下,铸件(上/下铸件和int双铸件)只是“类型转换”。正确的?
3.简而言之,它们之间的唯一区别在于:
型铸造——铸造的总称。
上/下转换——一个仅用于“引用类型转换”的术语,它涉及继承。
转换“byte short char int long float double”(例如: double myDouble = (double) myInt; )--(只是“引用类型转换”中未使用的另一种类型的转换)。
正确的?

au9on6nz

au9on6nz1#

类型转换是指将一个基本数据类型的值赋给另一个类型。
通过使用强制转换操作,强制转换是显式的。请参阅语言规范。
型铸造是一个总称。具体的情况描述为向上转换(从子类到超类)或向下转换(从超类到子类),但这些情况仍然是类型转换。
在表达式中,例如

double myDouble = myInt;

没有演员阵容。这是类型转换;特别是一个扩大的基本转换。
对于引用类型,有一个类似的概念,即扩大转换(从子类型到超类型),也可以缩小转换(从超类型到子类型)。
类型转换可能是隐式的。强制转换用于显式强制特定转换。

axr492tv

axr492tv2#

java语言规范根本没有提到“向上投射”或“向下投射”,因此就语言规范而言,不存在向上投射或向下投射这类东西。
类型转换是指将一个基本数据类型的值赋给另一个类型。
根据规范,这是不正确的。等级库指定的强制转换操作符如下所示:

(some type) some expression

例如

(float)someDouble

规范还指定这是一个强制转换上下文。
“类型转换”是什么意思,规范称之为“转换”。转换发生在上下文中。“向上”和“向下”可能意味着“扩大转化”和“缩小转化”。
这是:

double myDouble = myInt;

是从 intdouble (许多扩大的原语转换之一),发生在赋值上下文中。没有涉及铸型。
与实际演员比较:

(float)myDouble

这是从 doublefloat (许多缩小原语转换中的一种)发生在铸造上下文中。
不,像这样的原始类型 int , double , float etc不能继承任何东西。这些原语转换是“硬编码”/由规范强制执行的,而不是由于 int 继承自 double “或者类似的。

相关问题