java - 哪个在执行 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
我尝试了两种情况,但从任何人那里得到不同的结果,请帮助我为什么会发生这种情况。
解决方案
不,您不能在 Java 中覆盖静态方法,尽管您可以在子类中声明具有相同签名的方法。
按照 Java 编码约定,静态方法应该通过类名而不是对象来访问。简而言之,静态方法可以重载,但在Java中不能被覆盖
(来源)
推荐阅读
- mysql - 在powershell中将参数传递给mysql.exe
- python - case-when 在 pyspark 中检查多个表
- stripe-payments - Stripe:您必须至少请求以下功能之一
- c# - Azure Functions 2 本地部署 MissingMethodException [更新]
- c# - C# 和 CefSharp 中的 Selenium WebDriver
- flutter - 如何在 Flutter 中完全隐藏密码输入?
- java - 如何在 Java 中为单元测试创建“FTPS”模拟服务器,出现错误 - javax.net.ssl.SSLException: 502 Command not implemented: AUTH
- reactjs - 如果属性更改发生在嵌套对象中,React Redux 不会识别 prop 更改
- r - 如何将大型 640x 640 矩阵沿对角线分割许多(20-30)倍
- python - 烧瓶“[Errno 113] 没有路由到主机”,我不知道为什么