Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串
ylbtech-Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串 |
1.返回顶部 |
Java 实例 - 连接字符串
Java 实例
以下实例演示了通过 "+" 操作符和StringBuffer.append() 方法来连接字符串,并比较其性能:
StringConcatenate.java 文件
public class StringConcatenate {public static void main(String[] args){long startTime = System.currentTimeMillis();for(int i=0;i<5000;i++){String result = "This is"+ "testing the"+ "difference"+ "between"+ "String"+ "and"+ "StringBuffer";}long endTime = System.currentTimeMillis();System.out.println("字符串连接" + " - 使用 + 操作符 : " + (endTime - startTime)+ " ms");long startTime1 = System.currentTimeMillis();for(int i=0;i<5000;i++){StringBuffer result = new StringBuffer();result.append("This is");result.append("testing the");result.append("difference");result.append("between");result.append("String");result.append("and");result.append("StringBuffer");}long endTime1 = System.currentTimeMillis();System.out.println("字符串连接" + " - 使用 StringBuffer : "+ (endTime1 - startTime1)+ " ms");} }
以上代码实例输出结果为:
字符串连接 - 使用 + 操作符 : 0 ms 字符串连接 - 使用 StringBuffer : 6 ms
Java 实例
2.返回顶部 |
案例扩展认知:+"为每个字符串变量赋值,公用一个内值,占用一份内存空间;"StringBuffer"每次新建一个新对象,内存分配新的空间,新分配5000份内存空间;
public class StringConcatenate {public static void main(String[] args){long startTime = System.currentTimeMillis();String[] strArr = new String[500];for(int i=0;i<500;i++){String result = "This is";strArr[i]=String.valueOf(result.hashCode());}long endTime = System.currentTimeMillis();System.out.println("字符串连接" + " - 使用 + 操作符 : " + (endTime - startTime)+ " ms");System.out.println(strArr[0]+"\n"+strArr[1]+"\n"+strArr[2]);long startTime1 = System.currentTimeMillis();for(int i=0;i<500;i++){StringBuffer result = new StringBuffer();result.append("This is");strArr[i]=String.valueOf(result.hashCode());}long endTime1 = System.currentTimeMillis();System.out.println("字符串连接" + " - 使用 StringBuffer : "+ (endTime1 - startTime1)+ " ms");System.out.println(strArr[0]+"\n"+strArr[1]+"\n"+strArr[2]);} }
打印结果:
字符串连接-使用+操作符:1ms -1027042079 -1027042079 -1027042079 字符串连接-使用StringBuffer操作符:2ms1167165921 1442002549 1383884648
附上另一种角度的性能分析,当需要对字符串对象的长度进行变化时,用 + 拼接的性能在循环时就会慢的慢的多,实际上 + 号拼接字符串也是通过 StringBuild 或 StringBuffer 实现的,但当进行频繁的修改本身时,+ 拼接会比直接用方法拼接产生更多的中间垃圾对象,耗用更多的内存,因此更推荐使用 StringBuild。其实我认为上述案例的性能分析是没有意义的,如果明确了要拼接的字符串的话,完全可以直接使用两种如下代码:
result =result + "This is esting the difference between String and StringBuffer "; 或 result.append("This is esting the difference between String and StringBuffer" );
public class Main {public static void main(String[] args){String result1 = null;StringBuffer result = new StringBuffer();long startTime = System.currentTimeMillis();for(int i=0;i<5000;i++){result1 += "This is"+ "testing the"+ "difference"+ "between"+ "String"+ "and"+ "StringBuffer";}long endTime = System.currentTimeMillis();System.out.println("字符串连接" + " - 使用 + 操作符 : " + (endTime - startTime)+ " ms");long startTime1 = System.currentTimeMillis();for(int i=0;i<5000;i++){result.append("This is");result.append("testing the");result.append("difference");result.append("between");result.append("String");result.append("and");result.append("StringBuffer");}long endTime1 = System.currentTimeMillis();System.out.println("字符串连接" + " - 使用 StringBuffer : "+ (endTime1 - startTime1)+ " ms");} }
输出结果:
字符串连接 - 使用 + 操作符 : 1151 ms 字符串连接 - 使用 StringBuffer : 2 ms
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
转载于:https://www.cnblogs.com/storebook/p/10647383.html
Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串相关推荐
- Java NIO系列教程(十) Java NIO DatagramChannel
转载自 Java NIO系列教程(十) Java NIO DatagramChannel 译文链接 作者:Jakob Jenkov 译者:郑玉婷 校对:丁一 Java NIO中的 ...
- Java SE 高级教程
1.异常(Exception) 程序执行过程中发生中断,我们叫做异常,如果异常. 异常思维导图 1.1.异常的分类 异常分为检查性异常.运行时异常.和错误. 检查性异常:在编译时发生的异常. 运行时异 ...
- 【Java基础系列教程】第二章 Java语言概述、配置环境变量
一.计算机编程语言概述 1.1 语言 语言(英文:Language)是人类进行沟通交流的表达方式.例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语. 语 ...
- 【Java基础系列教程】第八章 Java面向对象详解(三)_抽象类、接口、内部类、深拷贝与浅拷贝
一.JavaBean规范 1.1 什么是JavaBean JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中.特点是可序列化,提供无参构造器,提供getter方法和 ...
- B站百万播放量Java零基础教程视频(适合Java 0基础,Java初学入门),史上最细Java零基础教学视频
是否还在为学习Java如何入门而烦恼? 是否还在为Java软件如何安装而烦恼? 是否还在找寻着适合零基础的Java视频教程? 动力节点教学总监老杜159集课堂实录Java零基础视频教程,从初学者角度出 ...
- java oauth2.0_教程:如何实现Java OAuth 2.0以使用GitHub和Google登录
java oauth2.0 将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录. 如果您像我一样懒惰,那么我想您也希 ...
- java字符连接字符串数组_Java中连接字符串的最佳方法
java字符连接字符串数组 最近有人问我这个问题–在Java中使用+运算符连接字符串是否对性能不利? 这让我开始思考Java中连接字符串的不同方法,以及它们如何相互对抗. 这些是我要研究的方法: 使用 ...
- Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释
Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...
- php server 连接字符串,sqlServer 数据库常用连接字符串
sqlServer 数据库常用连接字符串 用户名和密码验证的方式去连接到数据库服务器 add name="conStr" connectionString="Data S ...
- python字符串转整数_Python连接字符串和整数
python字符串转整数 Python supports string concatenation using + operator. In most of the programming langu ...
最新文章
- 2022-2028年中国FNG硅胶行业市场研究及前瞻分析报告
- SpringBoot 并发登录人数控制
- Transformer 架构逐层功能介绍和详细解释
- 2017年3月14日上午日志
- win10动态壁纸怎么设置_想把我的女朋友设置为动态壁纸:看过来,教你啊
- Java反射原理学习之MethodHandle debug
- 在ASP.NET Core中使用Apworks快速开发数据服务
- 小汤学编程之JavaEE学习day02——Servlet使用步骤、生命周期、接收与返回数据、GET与POST、转发与重定向
- 数据库 查询XML XQuery
- 帆软报表设计器菜单栏介绍之一
- 用DISKGEN恢复硬盘数据
- 公共代码参考(PackageManager)
- html编写qq整人代码,vbs代码大全?vbs整人代码?qq代码大全?常用VBS代码 值得一看
- UDP协议与TCP协议
- Python爬取网页图片
- 51单片机延时函数不起作用
- VUE常用指令v-xxx
- Signing for “target“ requires a development team. Select a development team in the project editor.
- 游戏建模需要报班学习吗?新手如何学习3D建模行业内容?
- linux命令lha用法详解
热门文章
- jaxws-ri下载链接
- LINUX编译sofia-sip
- Python的numpy,1.15.0和1.14.5,函数结果可能存在差异
- 关于手机联系人的改进想法
- 物质为何能在虚空粒子海中存在
- 商品包含资源和劳动两部分内容
- 线程池合适的线程数量
- oracle 11.2.0.4 make 报错,linux7安装oracle11.2.0.4RAC注意事项
- python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...
- 分片报文的最后一片_分片报文攻击防范 - CloudEngine 12800, 12800E V200R005C10 配置指南-安全 - 华为...