java字符串。lastIndexOf()字符和单个字符的字符串之间有区别吗?
我只是想知道是否有人知道在做以下事情时是否有很大的不同:
String wibble = "<blah> blah blah </blah>.... <wibble> blah wibble blah </wibble> some more test here";
int i = wibble.lastIndexOf(">");
int j = wibble.lastIndexOf('>');
你可以在下面搜索框中键入要查询的问题!
我只是想知道是否有人知道在做以下事情时是否有很大的不同:
String wibble = "<blah> blah blah </blah>.... <wibble> blah wibble blah </wibble> some more test here";
int i = wibble.lastIndexOf(">");
int j = wibble.lastIndexOf('>');
# 1 楼答案
在可读性没有差异的地方(如本例),最好使用只搜索字符的版本。lastIndexOf需要做的工作更少——在列表中查找单个元素比查找子列表更容易(这实际上就是搜索字符串所要做的)
# 2 楼答案
就性能而言,可能会略有不同。对于搜索单个字符,使用
char
而不是String
更快或更相等# 3 楼答案
字符串有额外的开销,不管它的长度是多少(除非你有一个非常智能的编译器,可以将单个字符串文本优化为字符常量:),所以如果你只搜索单个字符,你应该更喜欢字符版本。这并不是一个邪恶的优化,因为无论哪种方式,它都是可以理解的等价物
# 4 楼答案
意见不错,但数据更好。我写了一个快速基准:
测试代码
输出
结论
带有字符的版本大约快25%,但两个版本都执行得非常快,所以它可能永远不会成为代码中的瓶颈
# 5 楼答案
实际上,您可以查看String类的源代码。似乎lastIndex(char)和lastIndex(String)实际上是分开编写的。字符串类也应该有开销。所以char版本可能会快一点,但我怀疑是否会有任何显著的性能差异
http://www.docjar.com/html/api/java/lang/String.java.html