gpt4 book ai didi

java - 包装类中的隐式转换

转载 作者:行者123 更新时间:2023-12-01 06:42:38 25 4
gpt4 key购买 nike

我对 Java 中的数字包装类感到困惑。

这两个分配看起来是对称的 - 将 char 分配给 Integer,将 int 分配给 Character >。然而,第一个作业

Integer i = 'a';

给出编译错误,而第二个赋值

Character ch2 = 97;

是允许的。为什么?

最佳答案

虽然 int i = 'a' 工作正常,但不允许将其转换为 Integer,因为它需要装箱转换。

Java的装箱转换只定义了八种情况:

  • boolean 类型到 Boolean 类型
  • byte类型到Byte类型
  • short 类型到 Short 类型
  • char 类型到 Character 类型
  • int 类型到 Integer 类型
  • long 类型到 Long 类型
  • float 类型到 Float 类型
  • 从类型 double 到类型 Double

由于 'a'char 文字,Java 不允许从 char 转换为 Integer:字 rune 字始终为 char 类型。

但是,当你写

Character ch2 = 97;

Java 编译器发现 97 在 char 的有效范围内(即 0..65535),因此它将 97 视为 char ,而不是 int,并允许装箱转换。对超出范围的常量尝试相同的操作会产生错误:

Character ch3 = 65536; // error: incompatible types: int cannot be converted to Character

关于java - 包装类中的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43147725/

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