gpt4 book ai didi

java - "empty string"序列在 Java 中是如何表示的?

转载 作者:行者123 更新时间:2023-12-03 23:01:45 26 4
gpt4 key购买 nike

在我的职业生涯中,我经常看到这样的电话:

if( "".equals(foo) ) { //do stuff };

空字符串在Java底层是如何理解为数据的?

具体来说,我所说的“Java 底层”指的是内存的实际内容或一些用于表示 "" 序列的 C/C++ 结构,而不是高层Java 中的实现。

我之前检查过 Java 语言规范,这让我找到了 this ,并注意到“空字符串”并没有真正给出比这更多的定义,这就是导致头疼的原因。

然后我在一些不同的类上运行 javap 试图通过字节码梳理出答案,但是关于“机器如何处理序列 ”的行为 并没有真正更清楚。在排除了字节码和 Java 代码之后,我将问题发布在这里,希望有人能从较低级别的角度阐明这个问题。

最佳答案

没有“空字符串字符”这样的东西。字符始终是 UTF-16 代码单元,并且没有“空”代码单元。有一个“空字符串”,其表示方式与任何其他字符串完全相同:

  • char[] 引用
  • char[] 的索引
  • 一个长度

在这种情况下,长度将为 0。char[] 引用可能可能是对空 char 数组的引用,可能 在长度为 0 的 String 的所有实例之间共享。

(substring 之类的代码可以通过检测长度为 0 的请求并始终返回对空字符串的相同引用来实现,但我不知道实现这样做。)

关于java - "empty string"序列在 Java 中是如何表示的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23658503/

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