java基础入门-还原字符串的拼接的过程
平常我们很多时候都会使用字符串的拼接,但是为什么使用“+”号就是比stringbuilder慢,而且慢很多?
实验
[java] view plaincopy
- 
		package com.ray.teststring; 
- 
		
 
- 
		/** 
- 
		* 对比拼接字符串的两种方式 
- 
		* 
- 
		* @author ray 
- 
		* @since 2015-04-19 
- 
		* @version 1.0 
- 
		* 
- 
		*/ 
- 
		public class StringJoint { 
- 
		
 
- 
		/** 
- 
		* 使用+拼接 
- 
		*/ 
- 
		public void stringJointWithPlus() { 
- 
		String str = ""; 
- 
		for (int i = 0; i < 60000; i++) { 
- 
		str += "a"; 
- 
		} 
- 
		} 
- 
		
 
- 
		/** 
- 
		* 使用stringbuilder拼接 
- 
		*/ 
- 
		public void stringJointWithStringBuilder() { 
- 
		StringBuilder sb = new StringBuilder(); 
- 
		for (int i = 0; i < 60000; i++) { 
- 
		sb.append("a"); 
- 
		} 
- 
		} 
- 
		
 
- 
		public static void main(String[] args) { 
- 
		StringJoint stringJoint = new StringJoint(); 
- 
		long beginTime = System.currentTimeMillis(); 
- 
		stringJoint.stringJointWithPlus(); 
- 
		long firstTime = System.currentTimeMillis(); 
- 
		System.out.println(firstTime - beginTime);// 6813 
- 
		long beginTime2 = System.currentTimeMillis(); 
- 
		stringJoint.stringJointWithStringBuilder(); 
- 
		long secondTime = System.currentTimeMillis(); 
- 
		System.out.println(secondTime - beginTime2);// 16 
- 
		} 
- 
		} 
下面我们先输出+号操作里面的东西
[java] view plaincopy
- 
		package com.ray.teststring; 
- 
		
 
- 
		/** 
- 
		* 对比拼接字符串的两种方式 
- 
		* 
- 
		* @author ray 
- 
		* @since 2015-04-19 
- 
		* @version 1.0 
- 
		* 
- 
		*/ 
- 
		public class StringJoint { 
- 
		
 
- 
		/** 
- 
		* 使用+拼接 
- 
		*/ 
- 
		public void stringJointWithPlus() { 
- 
		String str = ""; 
- 
		for (int i = 0; i < 60000; i++) { 
- 
		String temp=str; 
- 
		System.out.println(temp.equals(str)); 
- 
		str += "a"; 
- 
		System.out.println(temp.equals(str)); 
- 
		} 
- 
		} 
- 
		
 
- 
		/** 
- 
		* 使用stringbuilder拼接 
- 
		*/ 
- 
		public void stringJointWithStringBuilder() { 
- 
		StringBuilder sb = new StringBuilder(); 
- 
		for (int i = 0; i < 60000; i++) { 
- 
		sb.append("a"); 
- 
		} 
- 
		} 
- 
		
 
- 
		public static void main(String[] args) { 
- 
		StringJoint stringJoint = new StringJoint(); 
- 
		long beginTime = System.currentTimeMillis(); 
- 
		stringJoint.stringJointWithPlus(); 
- 
		long firstTime = System.currentTimeMillis(); 
- 
		System.out.println(firstTime - beginTime);// 6813 
- 
		long beginTime2 = System.currentTimeMillis(); 
- 
		stringJoint.stringJointWithStringBuilder(); 
- 
		long secondTime = System.currentTimeMillis(); 
- 
		System.out.println(secondTime - beginTime2);// 16 
- 
		} 
- 
		} 
	
输出结果:
	true
false
true
false
true
false
。。。
从结果上面来看,里面两个对象一直都是交错的不相同
下面我们来还原一下+号的操作:
str += "a";等价于
[java] view plaincopy
- 
		StringBuilder sb = new StringBuilder(); 
[java] view plaincopy
- 
		sb.append("a"); 
[java] view plaincopy
- 
		这两句的执行,所以在+的同时不断的new新的对象,所以导致性能低下 
【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!
Java开发高端课程免费试学
大咖讲师+项目实战全面提升你的职场竞争力
- 海量实战教程
- 1V1答疑解惑
- 行业动态分析
- 大神学习路径图
 
            Java开班时间
- 
                    北京 丨 10月31日 火速抢座
- 
                    上海 丨 10月31日 火速抢座
- 
                    广州 丨 10月31日 火速抢座
- 
                    兰州 丨 10月31日 火速抢座
- 
                    杭州 丨 10月31日 火速抢座
- 
                    南京 丨 10月31日 火速抢座
- 
                    沈阳 丨 10月31日 火速抢座
- 
                    大连 丨 10月31日 火速抢座
- 
                    长春 丨 10月31日 火速抢座
- 
                    哈尔滨 丨 10月31日 火速抢座
- 
                    济南 丨 10月31日 火速抢座
- 
                    青岛 丨 10月31日 火速抢座
- 
                    烟台 丨 10月31日 火速抢座
- 
                    西安 丨 10月31日 火速抢座
- 
                    天津 丨 10月31日 火速抢座
- 
                    石家庄 丨 10月31日 火速抢座
- 
                    保定 丨 10月31日 火速抢座
- 
                    郑州 丨 10月31日 火速抢座
- 
                    合肥 丨 10月31日 火速抢座
- 
                    太原 丨 10月31日 火速抢座
- 
                    苏州 丨 10月31日 火速抢座
- 
                    武汉 丨 10月31日 火速抢座
- 
                    成都 丨 10月31日 火速抢座
- 
                    重庆 丨 10月31日 火速抢座
- 
                    厦门 丨 10月31日 火速抢座
- 
                    福州 丨 10月31日 火速抢座
- 
                    珠海 丨 10月31日 火速抢座
- 
                    南宁 丨 10月31日 火速抢座
- 
                    东莞 丨 10月31日 火速抢座
- 
                    贵阳 丨 10月31日 火速抢座
- 
                    昆明 丨 10月31日 火速抢座
- 
                    洛阳 丨 10月31日 火速抢座
- 
                    临沂 丨 10月31日 火速抢座
- 
                    潍坊 丨 10月31日 火速抢座
- 
                    运城 丨 10月31日 火速抢座
- 
                    呼和浩特丨10月31日 火速抢座
- 
                    长沙 丨 10月31日 火速抢座
- 
                    南昌 丨 10月31日 火速抢座
- 
                    宁波 丨 10月31日 火速抢座
- 
                    深圳 丨 10月31日 火速抢座
- 
                    大庆 丨 10月31日 火速抢座
 
					 
								 【热点话题】
						【热点话题】
					 
					 
								 
								 
							 
									 
							 
                     
                     
             
             
             
             
                     
                     
                     
                     
                     
                    



 
				 
				 
				 
				 400-111-8989
				400-111-8989
			 
				 lihm@tedu.cn
				lihm@tedu.cn
			
 
	

 
			 
			 
			 
			 
			
			 
					 
					 
				 
					 
					