gpt4 book ai didi

java - String 类中的 length 成员是整型常量吗?

转载 作者:行者123 更新时间:2023-12-01 07:00:55 25 4
gpt4 key购买 nike

我试图了解 String 类中的 length 成员是否是整数常量?我认为不是。

最佳答案

它不是 JLS 15.28 意义上的编译时常量表达式 .

表达式str.length()是一个方法调用,没有显式的方法调用都是常量表达式。即使字符串是文字也是如此;即,根据 JLS,"hello".length() 不是编译时常量表达式。

<小时/>

它是一个运行时常量,从某种意义上说,一旦String被创建,长度就不能改变。这是因为 Java 字符串是不可变的。

您可以通过查看(标准)String 类的任何版本的源代码来确认这一点。代码在不同版本之间可能会有所不同,但“运行时稳定性”属性在所有版本中将保持不变。

<小时/>

(实际上,上面的说法并不完全准确。如果你愿意使用bad反射来破坏封装,你可以修改String的私有(private)成员> 并对其进行变异。这可以更改 length() 返回的值。您可以通过 native 代码方法以及可能的其他方式实现相同的效果。但是...只是...不要去做吧!JLS 规定,如果您执行此类操作,则 Java 代码的行为未指定。)

关于java - String 类中的 length 成员是整型常量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52798556/

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