Eclipse 插件 PMD 建议我使用
str.charAt(0) == 'a'
而不是
str.startWith("a")
但我不想让代码变得更复杂,我相信java编译器非常聪明,它们通过将str.startWith("a")转换为str.charAt(0) == 'a来提高str.startWith("a")的性能'(或类似的东西)。
我说得对吗?
最佳答案
这里是来自 Java 7 编译类的两种方法的反编译代码。这两种方法都没有进行任何优化,并且应该可以安全地假设 Java 6 编译器将执行任何此类优化:
之前:
String str = "abc";
if (str.charAt(0) == 'a') {
System.out.println("Using CharAt");
}
if (str.startsWith("a")) {
System.out.println("Using startsWith");
}
之后:
String str = "abc";
if(str.charAt(0) == 'a')
System.out.println("Using CharAt");
if(str.startsWith("a"))
System.out.println("Using startsWith");
关于java - java 6或7编译器是否改进了 str.startWith ("a") 并将其转换为 str.charAt(0) == 'a' 如果它包含一个字符的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16613826/