首页 课程 师资 教程 报名

Java字符串拼接的方式

  • 2022-09-21 10:29:48
  • 957次 动力节点

在java中String字符串的拼接形式:

大家对字符串拼接方式已经有所了解,在java中,String是一个用final修饰的不可变的类,所以String对象一旦被创建出来就不能修改了,如果修改String字符串就相当于创建了一个新的String对象,再将新的对象的地址返回给他的引用。

package java.lang;
//import ...
public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
}

在java中,字符串是基于字符数组 value 实现的,而String中的 value是final修饰的,一旦赋值了就不可以改变。

方式一:

使用运算符”+“

String s1 = "abc";
String s2 = "def";
String s3 = "abc" + "def";
String s4 = "abc" + s2;
String s5 = s1 + s2;

第三行:如果是字符串常量的直接拼接,其实是在常量池中直接创建新的字符串,然后将其赋值给引用。

第四、五行:如果是含有字符串变量的拼接,在java中其实是通过StringBuilder创建了一个新的String对象。

(new StringBuilder()).append("abc").append(var2).toString();
(new StringBuilder()).append(var1).append(var2).toString();

方式二:

使用 concat()

String s1 = "abc";
String s2 = "def ";
String s3 = s1.concat(s2);

concat的源码

public String concat(String str) {
        int otherLen = str.length();
        if (otherLen == 0) {
            return this;
        }
        int len = value.length;
        char buf[] = Arrays.copyOf(value, len + otherLen);
        str.getChars(buf, len);
        return new String(buf, true);
    }
void getChars(char dst[], int dstBegin) {
        System.arraycopy(value, 0, dst, dstBegin, value.length);
    }

从源码可以看出,调用concat方法,其实就是通过调用Arrays.copyOf()方法,创建了一个大小为 s1.length + s2.length 的字符数组,再先后将s1 和 s2 拷贝进新数组,最后通过这个字符数组创建一个新的String对象返回。感兴趣的小伙伴也可以观看本站的Java基础教程,掌握更多的字符串拼接方式。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交