文档章节

concat与+的区别

猴亮屏
 猴亮屏
发布于 2014/05/26 10:09
字数 269
阅读 40
收藏 0

要看看他们之间的区别,我们可以从源码分析两者的区别, 
concat是String方法,String重载了“+”操作符(提醒下:Java不支持其他操作符的重载)。 
concat源码: 

Java代码   收藏代码
  1.   public String concat(String str) {      
  2. int otherLen = str.length();      
  3. if (otherLen == 0) {          
  4. return this;  
  5.     }  
  6.     char buf[] = new char[count + otherLen];  
  7.     getChars(0, count, buf, 0);  
  8.     str.getChars(0, otherLen, buf, count);  
  9.     return new String(0, count + otherLen, buf);  
  10.     }  
源码中对String中+操作符的描述如下 
引用
The Java language provides special support for the string concatenation operator ( + ), and for conversion of  other objects to strings. String concatenation is implemented  through the StringBuilder(or  StringBuffer) class and its  append method.

简单的概括下:String本身是不变的对象,但是string的+号操作符是通过StringBuilder或StringBuffer(可以通过反汇编class文件,看到使用的StringBuilder来实现的。) 
========================= 
以上两个方法中都有开辟(new)以及销毁堆空间的操作,打大量的string操作导致效率很低。 

所以在大量操作string字符串时,StringBuilder的append方法是最好的选择!

引用自Anddy 的回复,原文地址:http://www.iteye.com/problems/41712

© 著作权归作者所有

猴亮屏

猴亮屏

粉丝 37
博文 542
码字总数 60882
作品 4
北京
Android工程师
私信 提问
CONCATENATE升级版函数CONCAT连接字符更顺畅

CONCATENATE函数相信大家应该很熟悉,主要用于连接字符串。函数语法也很简单,只要输入你想要连接的字符内容或者引用一个单元格即可。此函数的弊端是参数只能引用一个单元格,不能引用一个区...

小新
2017/09/10
0
0
MYSQL体系大纲

1.为什么选用MySQL数据库? 2.MySQL数据库安装和环境配置 3.SQL语句汇总(以MyBatis为例) 3.1.join从句 3.2.when case 3.3.union使用 3.4.in和exists区别 3.5.日期函数 3.6.拼接函数 Oracle除...

微尘鉴
2015/09/20
65
0
mysql group-concat函数的长度限制

最近在做利用jxls导出excel的一个小功能,其中有一个导出是调用存储过程然后导出到excel中。就当以为跟普通的导出没有什么区别之后轻松加愉悦的完成了功能开发,不料在测试的过程中发现excel...

smileplus
2016/05/09
783
0
concat和concat_ws()区别及MySQL的几个实用字符串函数【转】

1、concat()函数 1.1 MySQL的concat函数可以连接一个或者多个字符串,如 mysql>select concat('10'); +--------------+ |concat('10') | +--------------+ |10 | +--------------+ 1 row in s......

houyiwujing
2011/12/15
181
0
listagg,vmsys.vm_concat与sys_connect_by_path函数

WMSYS.WMCONCAT: 依赖WMSYS 用户,不同oracle环境时可能用不了,返回类型为CLOB,可用substr截取长度后tochar转化为字符类型 LISTAGG : 11g2才提供的函数,不支持distinct,拼接长度不能大于4...

Hyacinth_Yuan
2015/12/28
154
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
23分钟前
2
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
34分钟前
2
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
34分钟前
2
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
40分钟前
6
0
IDEA 自定义方法注解模板

IDEA 自定义方法注解模板 1、使用效果 /*** 计算交易费用* @Author wangjiafang* @Date 2019/9/11* @param feeComputeVo* @return*/@PostMapping("/v1/fee_compute")public ApiResp......

小白的成长
40分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部