我在大约7-8年前的一本编程书中读到,检查string.length == 0是检查空字符串的一种更快的方法。我想知道这句话在今天是否仍然适用(或者它是否曾经是正确的),因为我个人认为string == ""更简单,可读性更好。我主要处理高级语言,如.NET和java。
发布于 2012-10-03 01:28:23
通常,string对象存储它们的长度,因此获取和比较整数非常快,并且比equals()需要更少的内存访问,而equals()在最坏的情况下必须检查长度并循环字符。
无论如何,现在字符串的equals()方法也应该首先检查长度,因此它应该-几乎与检查长度-的速度相同。
等于Java (http://www.docjar.com/html/api/java/lang/String.java.html)中的部分:
int n = count;
if (n == anotherString.count) {...}Objective-C (http://www.opensource.apple.com/source/CF/CF-476.15/CFString.c)中的等于部分- NSString基于CFString:
if (len1 != __CFStrLength2(str2, contents2)) return false;发布于 2012-09-26 04:02:04
用Java进行该测试的最好方法是
"".equals(string)因为这样可以处理string为空的情况。
至于哪个更快,我认为答案是无关紧要。这两种方法都非常快,实际上哪一种最快取决于内部编译器的实现。
发布于 2012-09-26 06:18:50
只需使用string.isEmpty()即可。
(我拒绝使用"".equals(string),因为如果您有一个null,这可能表示存在一个bug,它应该会使程序崩溃,因为它需要修复。我不能容忍空值。)
https://stackoverflow.com/questions/12590097
复制相似问题