栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如果Java是从数组中复制的,为什么Java要求对最终变量进行显式转换?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如果Java是从数组中复制的,为什么Java要求对最终变量进行显式转换?

JLS(第5.2节)具有使用
常量表达式 进行赋值转换的特殊规则:

此外,如果表达式是一个常量表达式(§15.28类型的)

byte
short
char
,或
int

  • 如果变量的类型是
    byte
    short
    char
    ,并且常量表达式的值在变量的类型中可表示,则可以使用变窄的原始转换。

如果我们点击上面的链接,我们将在 常量表达式 的定义中看到这些:

  • 基本类型的文字和类型的文字
    String
  • 加法运算符
    +
    -

    *引用常量变量(第4.2.4节)的简单名称(第6.5.6.1
    节)。

如果我们点击上面的第二个链接,我们会看到

原始类型或类型的变量

String
,即
final
,用一个编译时间常量表达式(初始化§15.28),被称为
恒定变量

因此,

foo + foo
只能将其赋给
fooFoo
if
foo
是一个 常量变量 。要将其应用于您的案例:

  • byte foo = 1;
    没有 定义 常量变量, 因为不是
    final

  • final byte foo = 1;
    确实 定义了一个 常量变量 ,因为它是
    final
    常量表达式 (原始文字)初始化的。

  • final byte foo = fooArray[0];
    没有 定义 常量变量, 因为它没有使用 常量表达式 初始化。

请注意,是否

fooFoo
本身
final
并不重要。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号