Java 字符串拼接

方法一:使用 + 号拼接【最常用、最简单】

 

✅ 语法

 
直接使用 + 运算符连接任意数据类型和字符串,是 Java 中最基础、最易上手的拼接方式。
 

✅ 核心特点

 
  1. 语法极度简洁,开发效率最高,日常开发单行少量拼接首选;
  2. 支持「字符串 + 字符串」「字符串 + 任意基本类型 / 引用类型」,其他类型会自动调用 toString() 转为字符串;
  3. JDK 5 及以上做了编译器优化:底层会自动把连续的 + 拼接,编译成 StringBuilder.append(),所以单行少量拼接时,效率和 StringBuilder 几乎无差别
 

✅ 完整实例 

public class StringConcatDemo {
    public static void main(String[] args) {
        // 1. 纯字符串拼接
        String str1 = "Java";
        String str2 = "编程";
        String res1 = str1 + str2;
        System.out.println("纯字符串拼接:" + res1); // 输出:Java编程

        // 2. 字符串 + 基本数据类型(自动转字符串)
        String str3 = "年龄:";
        int age = 20;
        String res2 = str3 + age;
        System.out.println("字符串+数字:" + res2); // 输出:年龄:20

        // 3. 多段连续拼接
        String res3 = "Hello" + " " + "Java" + " " + 2026;
        System.out.println("多段拼接:" + res3); // 输出:Hello Java 2026
    }
}
 
 

 

方法二:使用 String.concat(String str) 方法【字符串专属拼接】

 

✅ 语法

 
原字符串.concat(要拼接的字符串),是 java.lang.String 类原生提供的字符串专属拼接方法
 

✅ 核心特点

 
  1. 只能拼接字符串类型,参数必须是 String,如果要拼接其他类型,需要手动转字符串(如 String.valueOf(age));
  2. 拼接规则:如果拼接的字符串是 null,会拼接字符串 "null";如果是空字符串 "",则返回原字符串;
  3. 本质还是基于 String 不可变实现,拼接后返回新的字符串对象
 

✅ 完整实例 

public class StringConcatDemo {
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Java";

        // 基础拼接
        String res1 = str1.concat(str2);
        System.out.println("基础concat:" + res1); // 输出:HelloJava

        // 连续拼接(链式调用)
        String res2 = str1.concat(" ").concat(str2).concat("!");
        System.out.println("链式concat:" + res2); // 输出:Hello Java!

        // 拼接null值
        String nullStr = null;
        String res3 = str1.concat(nullStr);
        System.out.println("拼接null:" + res3); // 输出:Hellonull

        // 拼接空字符串
        String res4 = str1.concat("");
        System.out.println("拼接空字符串:" + res4); // 输出:Hello(原字符串)
    }
}
 
 

 

方法三:使用 StringBuilder / StringBufferappend() 方法【高效拼接、开发首选】

 

✅ 核心说明

 
这是 Java 中性能最优的字符串拼接方式,也是企业开发推荐的核心方案,专门解决「String 不可变导致的拼接性能问题」。
 
  • StringBuilder非线程安全,效率极高99% 的业务场景(单线程)首选
  • StringBuffer线程安全,效率略低,仅在「多线程并发拼接字符串」时使用;
  • 两者都是可变字符序列,拼接时不会创建新对象,而是直接在原有对象的缓冲区追加字符,最终调用 toString() 转为 String 即可。
 

✅ 语法

// StringBuilder(推荐)
StringBuilder sb = new StringBuilder();
sb.append(内容1).append(内容2).append(内容3);
String result = sb.toString();

// StringBuffer(多线程用)
StringBuffer sbf = new StringBuffer();
sbf.append(内容1).append(内容2);
String result = sbf.toString();
 
 

✅ 核心特点

 
  1. 支持拼接任意数据类型(字符串、数字、布尔值、对象等),自动转字符串;
  2. 支持链式调用append() 方法返回自身对象,可连续追加;
  3. 循环拼接场景的绝对最优解:如果需要在 for/while 循环中拼接字符串,严禁使用 + 号,必须用 StringBuilder,否则会创建海量无用对象,造成内存浪费和性能暴跌!
 

✅ 完整实例(含循环拼接重点场景)

 
public class StringConcatDemo {
    public static void main(String[] args) {
        // ========== 场景1:普通拼接 ==========
        StringBuilder sb = new StringBuilder();
        sb.append("Java")
          .append("编程助手")
          .append(2026)
          .append(true);
        String res1 = sb.toString();
        System.out.println("普通拼接:" + res1); // 输出:Java编程助手2026true

        // ========== 场景2:循环拼接(重点!!!) ==========
        // 需求:拼接 0-9 的数字,用逗号分隔
        StringBuilder sb2 = new StringBuilder();
        for (int i = 0; i < 10; i++) {
            sb2.append(i).append(",");
        }
        // 去掉最后一个多余的逗号
        String res2 = sb2.deleteCharAt(sb2.length() - 1).toString();
        System.out.println("循环拼接:" + res2); // 输出:0,1,2,3,4,5,6,7,8,9

        // ========== 场景3:多线程安全拼接 ==========
        StringBuffer sbf = new StringBuffer();
        sbf.append("线程安全").append("拼接");
        String res3 = sbf.toString();
        System.out.println("StringBuffer拼接:" + res3); // 输出:线程安全拼接
    }
}
 
 

 

方法四:JDK 8 新增 String.join() 【带分隔符的批量拼接】

 

✅ 语法

 
String.join(分隔符, 字符串1, 字符串2, ...)String.join(分隔符, 字符串集合/数组)
 

✅ 核心特点

 
  1. JDK 8 及以上版本可用,专门解决「带固定分隔符的批量拼接」场景(如逗号、空格、横线分隔);
  2. 语法简洁,无需手动处理「最后一个分隔符多余」的问题;
  3. 支持传入多个字符串、字符串数组、List 集合等,非常适合批量拼接。
 

✅ 完整实例 

import java.util.Arrays;
import java.util.List;

public class StringConcatDemo {
    public static void main(String[] args) {
        // 场景1:拼接多个独立字符串,指定分隔符
        String res1 = String.join("-", "Java", "Python", "Go", "C++");
        System.out.println("多字符串拼接:" + res1); // 输出:Java-Python-Go-C++

        // 场景2:拼接字符串数组
        String[] arr = {"北京", "上海", "广州", "深圳"};
        String res2 = String.join(" | ", arr);
        System.out.println("数组拼接:" + res2); // 输出:北京 | 上海 | 广州 | 深圳

        // 场景3:拼接List集合
        List<String> list = Arrays.asList("张三", "李四", "王五");
        String res3 = String.join(",", list);
        System.out.println("集合拼接:" + res3); // 输出:张三,李四,王五
    }
}
 
 

 

方法五:JDK 11 新增 String.repeat(int count) 【重复拼接同个字符串】

 

✅ 语法

 
原字符串.repeat(重复次数),专门用于「把同一个字符串重复拼接 N 次」的场景,JDK 11 及以上可用。
 

✅ 核心特点

 
  1. 替代传统的「循环 + append」实现重复拼接,语法极致简洁;
  2. 如果重复次数为 0,返回空字符串;次数为负数会抛出异常。
 

✅ 完整实例

 
public class StringConcatDemo {
    public static void main(String[] args) {
        String str = "Java-";
        
        // 重复拼接3次
        String res1 = str.repeat(3);
        System.out.println("重复拼接3次:" + res1); // 输出:Java-Java-Java-

        // 重复拼接0次(返回空字符串)
        String res2 = str.repeat(0);
        System.out.println("重复拼接0次:" + res2); // 输出:(空)

        // 实际业务场景:拼接分隔线
        String line = "-".repeat(20);
        System.out.println("分隔线:" + line); // 输出:--------------------
    }
}

posted on 2026-01-16 08:36  coding博客  阅读(5)  评论(0)    收藏  举报