首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查string.length == 0是否仍然比检查字符串== "“更快?

检查string.length == 0是否仍然比检查字符串== "“更快?
EN

Stack Overflow用户
提问于 2012-09-26 03:52:34
回答 5查看 21.2K关注 0票数 9

我在大约7-8年前的一本编程书中读到,检查string.length == 0是检查空字符串的一种更快的方法。我想知道这句话在今天是否仍然适用(或者它是否曾经是正确的),因为我个人认为string == ""更简单,可读性更好。我主要处理高级语言,如.NET和java。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-03 01:28:23

通常,string对象存储它们的长度,因此获取和比较整数非常快,并且比equals()需要更少的内存访问,而equals()在最坏的情况下必须检查长度并循环字符。

无论如何,现在字符串的equals()方法也应该首先检查长度,因此它应该-几乎与检查长度-的速度相同。

等于Java (http://www.docjar.com/html/api/java/lang/String.java.html)中的部分:

代码语言:javascript
运行
复制
int n = count;
if (n == anotherString.count) {...}

Objective-C (http://www.opensource.apple.com/source/CF/CF-476.15/CFString.c)中的等于部分- NSString基于CFString:

代码语言:javascript
运行
复制
if (len1 != __CFStrLength2(str2, contents2)) return false;
票数 3
EN

Stack Overflow用户

发布于 2012-09-26 04:02:04

用Java进行该测试的最好方法是

代码语言:javascript
运行
复制
"".equals(string)

因为这样可以处理string为空的情况。

至于哪个更快,我认为答案是无关紧要。这两种方法都非常快,实际上哪一种最快取决于内部编译器的实现。

票数 7
EN

Stack Overflow用户

发布于 2012-09-26 06:18:50

只需使用string.isEmpty()即可。

(我拒绝使用"".equals(string),因为如果您有一个null,这可能表示存在一个bug,它应该会使程序崩溃,因为它需要修复。我不能容忍空值。)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12590097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档