JAVA中的“+”“concat”和“append”
Posted Mr_madong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中的“+”“concat”和“append”相关的知识,希望对你有一定的参考价值。
“+”:时String类的一种重载,将“+”后面的对象,转换为String类型,然后在进行字符串的拼接。
“concat”:将指定字符串连接到此字符串的结尾,String的concat方法是写好的,直接可以调用,但是如果拼接的字符串为空,则会抛出空指针异常错误。
“append”:只针对StringBuffer类型,也是连接字符使用的,返回值类型一定是StringBuffer类型,
帮助理解:
① String tmp = “a” + “b” + “c”;
② String tmp = null;
tmp+= “a”;
tmp+= “b”;
tmp+= “c”;
③ String tmp = null;
StringBuffer buf = new StringBuffer();
buf.append(“a”);
buf.append(“b”);
buf.append(“c”);
tmp = buf.toString();
JAVA中的String Class是一个不可变类,所有对一个Sting Object的改变都回导致一个新的String Object的生成.那么对tmp+=a中+符号的实现呢?如果你注意一下StringBuffer的Javadoc会发现.JDK对它的实现是tmp=(new StringBuffer().append(tmp).append(“a”)).toSting(); 这样我们发现②这种方法在隐性生成了一个StringBuffer Object和一个String Object 再乘3就是六个object 的资源耗费.(还不包括String Class 和StringBuffer Class内部使用的Char[])而方法③只用了两个.也许有些程序员会对这些耗费不以为然,的确也是,不过在一些场景下它会成为perfamence的瓶颈.再回头看看①这种方法,它会被JAVA编译器编译为tmp=(new StringBuffer().append(“a”).append(“b”).append(“c”)).to String();我们发现做的和③方法是同样的事.
以上是关于JAVA中的“+”“concat”和“append”的主要内容,如果未能解决你的问题,请参考以下文章
python-dataframe的合并(append, merge, concat, join)
Pandas DataFrame concat vs append