类型转换和类型转换之间的区别

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 4 可能 2024
Anonim
零基础Java教程18期 自动类型转换与强制类型转换选择哪个方式好?
视频: 零基础Java教程18期 自动类型转换与强制类型转换选择哪个方式好?

内容


类型转换和类型转换之间的基本区别,即类型转换是由编译器“自动”进行的,而类型转换则由程序员“明确地完成”。

当需要将一种数据类型转换为另一种数据类型时,会出现两个术语“类型转换”和“类型转换”。当两种类型相互兼容时,编译器会自动将一种类型转换为另一种类型。让我们借助比较表来讨论类型转换和转换之间的区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表:

比较基础型铸类型转换
含义用户使用强制转换运算符将一种数据类型分配给另一种数据类型,然后将其称为“类型强制转换”。编译器自动将一种数据类型转换为另一种数据类型称为“类型转换”。
已应用类型转换也可以应用于两种不兼容的数据类型。仅当两种数据类型兼容时才能实现类型转换。
操作员为了将数据类型转换为另一种,需要使用转换运算符()。无需操作员。
数据类型的大小目标类型可以小于源类型。在此,目标类型必须大于源类型。
已实施它是在程序设计期间完成的。它是在编译时显式完成的。
转换类型

缩小转换。转换范围扩大。
诠释
字节b;
...
...
b =(字节)a;
int a = 3;
浮动b;
b = a; // b中的值= 3.000。

类型转换的定义

型铸 可以定义为在程序设计时由程序员将一种数据类型转换为另一种数据类型。不可能一直将一种数据类型自动转换为另一种数据类型。可能是“目的地类型”小于“来源类型”的条件。因此,程序员必须使用强制转换运算符“()”将较大的数据类型显式转换为较小的数据类型。由于较大的数据类型被调制为较小的数据类型,因此也称为“缩小转换”。


宣言:

destination_type =(target_type)变量/值//目标类型是您要转换源类型的类型,它始终是目标类型。

让我们通过一个例子来理解它。您想要将数据类型“ int”转换为“ byte”。现在,由于“字节”小于“整数”,因此不允许类型转换。在这里,我们必须使用强制转换运算符“()”将“ int”隐式转换为“ byte”。由于“ int”大于“ byte”,因此“ int”的大小将减小为“ int mod byte”范围。

诠释字节b; b =(字节)a;

当'float'转换为'int'时,float的大小将被截断,因为'int'不存储小数值。如果目标类型的大小太小而无法容纳源类型,则源类型为目标类型“范围”的模。当数据类型兼容时,也可以应用转换。优良作法是在需要类型转换的地方使用类型转换。

类型转换的定义

类型转换 是在需要时将一种数据类型自动转换为另一种数据类型,由编译器显式完成。但是在类型转换之前要满足两个条件。

  • 源和目标类型必须兼容。
  • 目标类型必须大于源类型。

要实现类型转换,必须满足这两个条件,这种转换称为“扩展转换”,因为较小的类型转换为较大的类型时,就会发生类型的扩展。对于这种扩展的转换,数字类型(如“ int”,“ float”)彼此兼容,而数字与char和boolean或char与boolean也不兼容。

此示例将对此提供更好的视图

int a = 3;浮动b; b = a; // b中的值= 3.000。

在这里,“ int”会转换为比“ int”大的“ float”,因此会产生源类型的扩大。此处,不需要强制转换运算符,因为编译器将明确地执行它。


  1. 将类型转换与类型转换区分开的基本区别在于,类型转换是程序员将一种类型转换为另一种类型。另一方面,类型转换是编译器在编译时将一种类型转换为另一种类型。
  2. 类型转换可以应用于可能彼此不兼容的数据类型。相反,类型转换只能应用于彼此兼容的数据类型。
  3. 在类型转换中将一种类型转换为另一种类型需要转换运算符“()”,而在类型转换中将一种数据类型转换为另一种数据不需要任何运算符。
  4. 在类型转换中将一种数据类型转换为另一种数据类型时,目标类型可以大于或小于源类型。相反,在类型转换中,目标类型必须大于源类型。
  5. 在类型转换中进行编码时,可以将一种类型转换为另一种类型。相反,在类型转换中,一种类型到另一种类型的转换是在编译期间明确完成的。
  6. 类型转换称为收窄转换,因为此处目标类型可以小于源类型。与类型转换不同,类型转换称为扩展转换,因为此处目标类型必须大于源类型。

结论:

可以得出结论,类型转换和类型转换都执行将一种数据类型转换为另一种数据的任务,但是在某种意义上,类型转换是由程序员使用Cast operator()'完成的,而类型转换则由编译器完成的,并且不使用任何运算符。