ylbtech-Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串
1.返回顶部
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、
2.返回顶部
1、
扩展案例1

案例扩展认知:+"为每个字符串变量赋值,公用一个内值,占用一份内存空间;"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

2、
扩展案例2

附上另一种角度的性能分析,当需要对字符串对象的长度进行变化时用 + 拼接的性能在循环时就会慢的慢的多,实际上 + 号拼接字符串也是通过 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、
3.返回顶部
4.返回顶部
5.返回顶部
1、
http://www.runoob.com/java/string-concatenation.html
2、
6.返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/storebook/p/10647383.html

Java-Runoob-高级教程-实例-字符串:14. Java 实例 - 连接字符串相关推荐

  1. Java NIO系列教程(十) Java NIO DatagramChannel

    转载自  Java NIO系列教程(十) Java NIO DatagramChannel 译文链接    作者:Jakob Jenkov    译者:郑玉婷     校对:丁一 Java NIO中的 ...

  2. Java SE 高级教程

    1.异常(Exception) 程序执行过程中发生中断,我们叫做异常,如果异常. 异常思维导图 1.1.异常的分类 异常分为检查性异常.运行时异常.和错误. 检查性异常:在编译时发生的异常. 运行时异 ...

  3. 【Java基础系列教程】第二章 Java语言概述、配置环境变量

    一.计算机编程语言概述 1.1 语言 语言(英文:Language)是人类进行沟通交流的表达方式.例如:中国人与中国人用普通话沟通.而中国人要和英国人交流,就要学习英语.              语 ...

  4. 【Java基础系列教程】第八章 Java面向对象详解(三)_抽象类、接口、内部类、深拷贝与浅拷贝

    一.JavaBean规范 1.1 什么是JavaBean JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中.特点是可序列化,提供无参构造器,提供getter方法和 ...

  5. B站百万播放量Java零基础教程视频(适合Java 0基础,Java初学入门),史上最细Java零基础教学视频

    是否还在为学习Java如何入门而烦恼? 是否还在为Java软件如何安装而烦恼? 是否还在找寻着适合零基础的Java视频教程? 动力节点教学总监老杜159集课堂实录Java零基础视频教程,从初学者角度出 ...

  6. java oauth2.0_教程:如何实现Java OAuth 2.0以使用GitHub和Google登录

    java oauth2.0 将Google和GitHub OAuth登录添加到Java应用程序的指南 我们添加到Takipi的最新功能之一是3rd party登录. 如果您像我一样懒惰,那么我想您也希 ...

  7. java字符连接字符串数组_Java中连接字符串的最佳方法

    java字符连接字符串数组 最近有人问我这个问题–在Java中使用+运算符连接字符串是否对性能不利? 这让我开始思考Java中连接字符串的不同方法,以及它们如何相互对抗. 这些是我要研究的方法: 使用 ...

  8. Java中String类的concat方法___java的String字符串的concat()方法连接字符串和“+“连接字符串解释

    Java中String类的concat方法 在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变 这两点从源码中对String的声明可以体现: private ...

  9. php server 连接字符串,sqlServer 数据库常用连接字符串

    sqlServer 数据库常用连接字符串 用户名和密码验证的方式去连接到数据库服务器 add name="conStr" connectionString="Data S ...

  10. python字符串转整数_Python连接字符串和整数

    python字符串转整数 Python supports string concatenation using + operator. In most of the programming langu ...

最新文章

  1. 2022-2028年中国FNG硅胶行业市场研究及前瞻分析报告
  2. SpringBoot 并发登录人数控制
  3. Transformer 架构逐层功能介绍和详细解释
  4. 2017年3月14日上午日志
  5. win10动态壁纸怎么设置_想把我的女朋友设置为动态壁纸:看过来,教你啊
  6. Java反射原理学习之MethodHandle debug
  7. 在ASP.NET Core中使用Apworks快速开发数据服务
  8. 小汤学编程之JavaEE学习day02——Servlet使用步骤、生命周期、接收与返回数据、GET与POST、转发与重定向
  9. 数据库 查询XML XQuery
  10. 帆软报表设计器菜单栏介绍之一
  11. 用DISKGEN恢复硬盘数据
  12. 公共代码参考(PackageManager)
  13. html编写qq整人代码,vbs代码大全?vbs整人代码?qq代码大全?常用VBS代码 值得一看
  14. UDP协议与TCP协议
  15. Python爬取网页图片
  16. 51单片机延时函数不起作用
  17. VUE常用指令v-xxx
  18. Signing for “target“ requires a development team. Select a development team in the project editor.
  19. 游戏建模需要报班学习吗?新手如何学习3D建模行业内容?
  20. linux命令lha用法详解

热门文章

  1. jaxws-ri下载链接
  2. LINUX编译sofia-sip
  3. Python的numpy,1.15.0和1.14.5,函数结果可能存在差异
  4. 关于手机联系人的改进想法
  5. 物质为何能在虚空粒子海中存在
  6. 商品包含资源和劳动两部分内容
  7. 线程池合适的线程数量
  8. oracle 11.2.0.4 make 报错,linux7安装oracle11.2.0.4RAC注意事项
  9. python网络编程第三版网盘_Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)...
  10. 分片报文的最后一片_分片报文攻击防范 - CloudEngine 12800, 12800E V200R005C10 配置指南-安全 - 华为...