`

String的拼接

阅读更多
当使用+拼接字符串时,会生成新的String对象,而不是向原有的String对象追加内容。与之形成对比的是StringBuffer类,StringBuffer类使用append()方法追加字符串,向原有对象追加而不是创建新的对象。append()方法返回当前StringBuffer对象,因此可以串联起来使用。


String s = null;  
s += "abc";  
System.out.println(s);  


答案是:nullabc!
就这三行代码, 我问了不下于50个人, 有资深的人也有新手的, 在不运行的情况下全答错了! 可见现在学java的人有很多人都是速成的,而且这种原理级而又看似不怎么实用的东西几乎没什么人去研究, 但是后面说的机试如果能知道String拼接的原理的话,将很容易就解决!

很早的时候我就知道String拼接中间会产生StringBuilder对象(JDK1.5之前产生StringBuffer),但是当时也没有去深究内部, 导致在华为笔试此题就错了!

字符串拼接原理:运行时, 两个字符串str1, str2的拼接首先会调用 String.valueOf(obj),这个Obj为str1,而String.valueOf(Obj)中的实现是return obj == null ? "null" : obj.toString(), 然后产生StringBuilder, 调用的StringBuilder(str1)构造方法, 把StringBuilder初始化,长度为str1.length()+16,并且调用append(str1)! 接下来调用StringBuilder.append(str2), 把第二个字符串拼接进去, 然后调用StringBuilder.toString返回结果!

所以那道题答案的由来就是:StringBuilder.append("null").append("abc").toString();


转自http://blog.csdn.net/zolalad/article/details/30089327
分享到:
评论

相关推荐

    Android string拼接

    本文将详细介绍如何在Android项目中利用`String`资源进行字符串拼接,包括基本原理、实现方法及注意事项。 #### 基本概念 1. **资源文件**:在Android中,我们可以将常量文本存储在资源文件中,通常这些资源文件...

    java String拼接时的问题汇总

    Java String 拼接时的问题汇总 Java 中的 String 拼接是指将多个字符串连接起来形成一个新的字符串。这种操作在 Java 中非常常见,但是它也存在一些需要注意的问题。本篇文章将对 Java String 拼接时的问题进行汇总...

    Java String 拼接字符串原理详解

    Java String 拼接字符串原理详解 Java 中的字符串拼接是一个非常基础的操作,但是其背后却隐藏着许多复杂的机理。在本文中,我们将深入探讨 Java 中字符串拼接的原理,并揭开其幕后的秘密。 首先,让我们来看一道...

    浅析Java中String与StringBuffer拼接的区别

    在Java编程语言中,String和StringBuffer类都用于处理字符串,但它们在处理字符串拼接时有着显著的区别。本文将详细解析这两个类在拼接字符串时的行为差异。 首先,我们来了解一下String类。String对象在Java中是不...

    StringBuffer和String_区别

    在这个例子中,String 的拼接更简单,但由于每次拼接都会创建一个新的 String 对象,因此在多次拼接时会消耗更多的内存资源。而使用 StringBuffer 只会在第一次创建时分配内存,后续的操作不会导致新的对象创建。 ...

    将excal批量数据插入到postgresql数据库(目前实现字符串拼接的方式)

    在本教程中,我们将聚焦于如何将Excel数据批量导入到PostgreSQL数据库,特别关注一种常见的方法——通过字符串拼接的方式。PostgreSQL是一个功能强大的开源关系型数据库管理系统,而Excel则是广泛使用的电子表格工具...

    sql的封装,不需要使用StringBuffer进行字符串拼接

    然而,这种字符串拼接方式在处理大量数据或者频繁拼接时,容易导致内存开销过大,因为每次拼接都会创建新的字符串对象。更重要的是,这种方式很容易引发SQL注入安全问题,当用户输入未经验证直接插入SQL语句时,攻击...

    .NET 拼接变量名称

    在C#中,有两种主要的方式可以拼接字符串:使用`+`运算符或者使用`String.Format`方法。对于简单的字符串拼接,`+`运算符更为直观: ```csharp string prefix = "textbox"; string suffix = "1"; string variable...

    js实现String.Fomat的实例代码

    拼接字符串用习惯了C#的String.Format。今天看别人的代码在js中也封装了一个js的String.Format,用来拼接字符串和DOM。 js实现和调用String.Format String.Format = function (str) { for (var i = 1; i < ...

    C# 拼接字符串的几种方式和性能

    C# 拼接字符串的方式有多种,每种方式都有其优缺,今天我们将讨论三种常用的方式:简单“+=”拼接法、String.Format()和StringBuilder.Append()。 1. 简单“+=”拼接法 简单“+=”拼接法是最简单的拼接方式,但...

    StringBuilderExtensions 字符串拼接

    StringBuilder 完成c# string 拼接替换等接口

    for循环中如何正确使用字符串拼接

    3. `+` 运算符:在Java中,字符串字面量或`String`对象与任何非`String`对象相加时,会触发自动装箱过程,将非`String`对象转换为`String`,然后创建一个`StringBuilder`实例,调用`append`方法完成拼接。...

    c#支付宝标准双接口实现

    输入:Dictionary<string, string> dicArray 需要拼接的数组 输出:string 拼接完成以后的字符串 public static string CreateLinkStringUrlencode(Dictionary<string, string> dicArray, Encoding code) 功能:把...

    C_中字符串操作总结参考.pdf

    // 使用string拼接 string str1 = ""; for (int i = 0; i ; i++) { str1 += i.ToString(); } // 使用String拼接 string str2 = ""; for (int i = 0; i ; i++) { str2 = new String(new char[] { str2, i.ToString...

    动态拼接sql语句工具类,拼接where后面语句

    动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...

    java 解析由String类型拼接的XML文件方法

    Java 解析由 String 类型拼接的 XML 文件方法 Java 解析由 String 类型拼接的 XML 文件方法是一种常用的数据解析方式。在实际开发中,我们经常需要解析 XML 文件来获取其中的数据。今天,我们将分享一篇 java 解析...

    最新支付宝手机网站支付源代码,安全可靠

    输出:String 拼接完成以后的字符串 Function CreateLinkstringUrlEncode(sPara) 功能:把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,并且对其做URLENCODE编码 输入:Array sPara 需要拼接...

    Golang字符串的拼接方法汇总

    - `buffer.WriteString()`在大量拼接时速度最快,几乎不消耗时间,这是因为其优化了内存增长,适用于高频率的字符串拼接操作。 - `fmt.Sprintf()`适合于混合类型的数据拼接,例如字符串与数字,但其性能略逊于`...

    Java中string字符串和char字符之间的千丝万缕

    - 将String转换为char数组,然后将char数组与其他字符或String拼接: ```java String str = "abc"; char[] charArray = str.toCharArray(); char[] additionalChars = {'d', 'e'}; // 使用StringBuilder或...

    java中stringBuilder的用法.pdf

    当使用String拼接时,每次拼接都会创建一个新的String对象,而StringBuilder则会直接在原有的字符序列上进行修改,从而减少了对象创建和垃圾回收的开销。 在文档中提供了几个关于StringBuilder的使用实例,展示了其...

Global site tag (gtag.js) - Google Analytics