零基础java自学流程-Java语言进阶69

零基础java自学流程-Java语言进阶69,第1张

零基础java自学流程-Java语言进阶69 想要系统学习JAVA推荐JAVA300集
Java300集零基础适合初学者视频教程←点击
 不同场景下三个类的性能测试

从第二节我们已经看到了三个类之间的区别。在本节中,我们将做一个小测试来测试这三个类的性能差异:

public class Main {
    private static int time = 50000;
    public static void main(String[] args) {
        testString();
        testStringBuffer();
        testStringBuilder();
        test1String();
        test2String();
    }
     
     
    public static void testString () {
        String s="";
        long begin = System.currentTimeMillis();
        for(int i=0; i 

 测试结果(win7,Eclipse,JDK6):

  

上面提到string+="hello"的 *** 作事实上会自动被JVM优化,看下面这段代码: 

public class Main {
    private static int time = 50000;
    public static void main(String[] args) {
        testString();
        testOptimalString();
    }
     
     
    public static void testString () {
        String s="";
        long begin = System.currentTimeMillis();
        for(int i=0; i 

 执行结果:

  

 

验证。

以下是对上述结果的一般解释:

1)直接添加字符串是有效的,因为编译器决定了它们的值,例如,“I”+“love”+“Java”;在编译时优化为“Ilovejava”。可以使用javap -c命令来反编译生成的类文件来验证这一点。

对于间接加法(即包含字符串引用),s1+s2+s3;这比直接加法效率低,因为引用变量没有在编译器中进行优化。

2) String、StringBuilder和StringBuffer的执行效率:

StringBuilder祝辞StringBuffer祝辞字符串

当然,这是相对的,并非在所有情况下都是如此。

例如String STR = "hello"+ "world"比StringBuilder更有效st = new StringBuilder().append("hello").append("world")

因此,这三种类别各有优缺点,应根据不同情况进行选择和使用:

字符串STR ="hello"推荐用于字符串添加或小更改。

在频繁添加字符串时推荐使用StringBuilder,在使用多个线程时推荐使用StringBuffer。


 想要系统学习JAVA推荐JAVA300集
Java300集零基础适合初学者视频教程←点击

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3982517.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存