gpt4 book ai didi

java - 为什么在 Java 中允许将 double 转换为 char?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:22 24 4
gpt4 key购买 nike

为什么 char c = (char)65.8; 允许在 Java 中使用?

因为 65.8 不是一个确切的 Unicode 值,它不应该抛出错误吗?我知道 double 被截断为整数,在本例中为 65,但在我看来允许程序员进行这样的转换似乎是糟糕的设计。

最佳答案

这就是所谓的缩小类型转换。来自 oracle docs :

22 specific conversions on primitive types are called the narrowing primitive conversions:

short to byte or char

char to byte or short

int to byte, short, or char

long to byte, short, char, or int

float to byte, short, char, int, or long

double to byte, short, char, int, long, or float

A narrowing primitive conversion may lose information about the overall magnitude of a numeric value and may also lose precision and range.

在 Java 中,有两种基本类型的类型转换:wideningnarrowing

widening conversion 当您从范围更小(或更窄)的类型转换为范围更大(或更宽)的类型时,就会发生这种情况。因此,数据不会丢失,转换被认为是“安全的”。

当您从范围较大(或较宽)的类型转换为范围较小(或较窄)的类型时,会发生缩小转换。由于我们正在缩小范围,因此可能会丢失数据,因此此转换被视为“不安全”

narrowing type conversion

bytechar的转换是一个特例,同时代表wideningnarrowing .转换首先将 byte 转换为 int,然后将 int 转换为 char

我能想到为什么缩小类型转换不会导致错误/异常的一个原因是在没有数据丢失的情况下允许方便/简单/快速的类型转换。编译器让我们来确保转换后的数据能够适合较小的范围。如果我们想要快速截断值,例如舍入 double 的值(通过将其类型转换为 int),它也很有用。

关于java - 为什么在 Java 中允许将 double 转换为 char?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26248948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com