首页 > 解决方案 > 哪个在执行 StringBuffer 或 StringBuilder 时花费更多时间?

问题描述

我试图查看 StringBuffer 和 StringBuilder 的执行速度,但每次我得到不同的结果。

案例一

     long startTime=System.currentTimeMillis();     
     StringBuilder builder=new StringBuilder();
     StringBuffer buffer=new StringBuffer();

    for(int i=0;i<1000;i++){
            builder.append("Okay");}

    System.out.println("Builder Elapsed Time  :"+(System.currentTimeMillis()- 
    startTime));
    
    long bufferStartTime=System.currentTimeMillis();
    for(int i=0;i<1000;i++){
    buffer.append("Okay");}
    System.out.println("Buffer Elapsed Time  :"+(System.currentTimeMillis()- 
    bufferStartTime));
    
    OUTPUT:-
    Builder Elapsed Time:1
    Buffer Elapsed Time :0

案例二

    StringBuilder builder=new StringBuilder();
    StringBuffer buffer=new StringBuffer();
    long startTime=System.currentTimeMillis();
    for(int i=0;i<1000;i++) {
    buffer.append("Okay");
    }
    System.out.println("Buffer Elapsed Time  :"+(System.currentTimeMillis()- 
    startTime));    
    long builderStartTime=System.currentTimeMillis();
    for(int i=0;i<1000;i++){
    builder.append("Okay");}
    System.out.println("Builder Elapsed Time  :"+(System.currentTimeMillis()- 
    builderStartTime));

   OUTPUT:-
   Buffer Elapsed Time:1
   Builder Elapsed Time:0

我尝试了两种情况,但从任何人那里得到不同的结果,请帮助我为什么会发生这种情况。

标签: javaandroid

解决方案


不,您不能在 Java 中覆盖静态方法,尽管您可以在子类中声明具有相同签名的方法。

按照 Java 编码约定,静态方法应该通过类名而不是对象来访问。简而言之,静态方法可以重载,但在Java中不能被覆盖

来源


推荐阅读