在我的整个职业生涯中,我经常看到这样的电话:
if( "".equals(foo) ) { //do stuff };
Run Code Online (Sandbox Code Playgroud)
如何根据Java较低级别的数据理解空字符串?
具体来说,通过"低级Java",我指的是内存的实际内容或用于表示""序列的一些C/C++构造,而不是Java中的高级实现.
我之前已经检查了Java语言规范,它引导我这一点,并注意到"空字符串"并没有真正给出更多的定义,这就是导致头脑搔痒的原因.
然后javap,我尝试通过字节码来尝试通过字节码来解释答案,但是关于"机器如何处理序列的行为""实际上并不是更清楚.然后排除了字节代码和Java代码然后我发布了"这里的问题,希望有人能从较低层面的角度阐明这个问题.
没有"空字符串"这样的东西.字符始终是UTF-16代码单元,并且没有"空"代码单元.有一个"空字符串",其表示方式与任何其他字符串完全相同:
char[]参考char[]在这种情况下,长度将是0.char[]参考可能潜在地是一个空字符数组,这可能参考潜在所有实例之间共享String其具有的长度为0.
(代码substring 可以通过检测0长度请求并始终将相同的引用返回到空字符串来实现,但我不知道实现这样做.)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |