欢迎光临
我们一直在努力

Java 常用 API(String & StringBuilder)超详细整理,从入门到精通

API 全称是应用程序编程接口,简单理解就是 Java 官方提前封装好的类与方法,开发者可直接调用实现功能。本章重点讲解开发使用频率最高的String字符串类与StringBuilder字符串缓冲区,包含底层特点、构造方法、全套成员方法、经典案例与内存分析,语法 + 实战结合,适合零基础学习、面试复习。

一、API 概述

API 就是 Java 官方提供的现成类和方法,我们无需从零编写底层逻辑,直接调用即可完成业务。前期已经接触过Scanner(键盘录入)、Random(随机数),本章学习字符串两大核心类:String、StringBuilder。

二、String 类

2.1 字符串应用场景

字符串是程序中最常用的数据类型,账号密码、文本内容、弹幕、聊天信息、手机号等业务场景,都离不开字符串操作。

2.2 String 类核心特点

  • Java 中所有双引号包裹的内容,都是 String 类对象;
  • 字符串内容一旦创建,不可修改;
  • 字符串可以被多个引用变量共享。
  • 2.3 String 常用构造方法

    构造方法功能说明
    public String() 创建一个空白字符串,无任何字符
    public String(String original) 根据传入字符串,创建新字符串对象
    public String(char[] chs) 根据字符数组,创建字符串对象

    代码演示:

    public class StringCreate {
    public static void main(String[] args) {
    // 1. 空参构造
    String s1 = new String();

    // 2. 传入字符串构造
    String s2 = new String("Java");

    // 3. 字符数组转字符串
    char[] arr = {'a','b','c'};
    String s3 = new String(arr);

    System.out.println(s1);
    System.out.println(s2);
    System.out.println(s3);
    }
    }

    2.4 字符串内存与 == 判断(高频面试点)

    ==对于引用类型,比较的是内存地址,结合字符串常量池分四种场景讲解:

    场景 1:直接赋值常量

    String s1 = "abc";
    String s2 = "abc";
    System.out.println(s1 == s2); // 结果:true

    解析:双引号常量会存入字符串常量池,池内数据共享,两个变量指向同一地址。

    场景 2:new 关键字创建对象

    String s1 = "abc";
    String s2 = new String("abc");
    System.out.println(s1 == s2); // 结果:false

    解析:new会在堆内存开辟新空间,s1指向常量池,s2指向堆对象,地址不同。

    场景 3:变量拼接字符串

    String s1 = "abc";
    String s2 = "ab";
    String s3 = s2 + "c";
    System.out.println(s1 == s3); // 结果:false

    解析:变量拼接底层会使用StringBuilder,最终生成新堆对象,和常量池地址不一致。

    场景 4:纯常量拼接

    String s1 = "abc";
    String s2 = "a" + "b" + "c";
    System.out.println(s1 == s2); // 结果:true

    解析:编译器会做常量优化,直接合并为"abc",复用常量池地址。

    2.5 字符串内容比较方法

    ==比较地址,比较字符串内容必须使用专用方法:

  • public boolean equals(String str):区分大小写,完全一致才返回true;
  • public boolean equalsIgnoreCase(String str):忽略大小写比较。
  • 代码示例(模拟登录案例):

    import java.util.Scanner;

    public class LoginDemo {
    public static void main(String[] args) {
    // 预设正确账号密码
    String userName = "admin";
    String pwd = "123456";
    Scanner sc = new Scanner(System.in);
    int count = 3; // 登录次数

    while (count > 0) {
    System.out.println("请输入用户名:");
    String inputUser = sc.next();
    System.out.println("请输入密码:");
    String inputPwd = sc.next();

    if (userName.equals(inputUser) && pwd.equals(inputPwd)) {
    System.out.println("登录成功!");
    break;
    } else {
    count–;
    System.out.println("账号或密码错误,剩余次数:" + count);
    }
    }
    }
    }

    2.6 字符串遍历相关方法

  • public int length():获取字符串长度;
  • public char charAt(int index):根据索引获取单个字符;
  • public char[] toCharArray():将字符串转为字符数组。
  • 实战案例:统计大写、小写、数字字符数量

    import java.util.Scanner;

    public class CountChar {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入字符串:");
    String str = sc.next();

    int upper = 0; // 大写
    int lower = 0; // 小写
    int number = 0; // 数字

    char[] chArr = str.toCharArray();
    for (char ch : chArr) {
    if (ch >= 'A' && ch <= 'Z') {
    upper++;
    } else if (ch >= 'a' && ch <= 'z') {
    lower++;
    } else if (ch >= '0' && ch <= '9') {
    number++;
    }
    }
    System.out.println("大写字母:" + upper);
    System.out.println("小写字母:" + lower);
    System.out.println("数字:" + number);
    }
    }

    2.7 字符串截取方法

  • public String substring(int beginIndex):从指定索引截取到字符串末尾;
  • public String substring(int beginIndex, int endIndex):截取指定区间,包头不包尾(包含起始索引,不包含结束索引)。
  • 实战案例:手机号屏蔽(156****1234)

    import java.util.Scanner;

    public class PhoneHide {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入手机号:");
    String phone = sc.next();

    // 截取前3位 + 拼接**** + 截取后4位
    String start = phone.substring(0,3);
    String end = phone.substring(7);
    String result = start + "****" + end;
    System.out.println("屏蔽后:" + result);
    }
    }

    2.8 字符串替换方法

    方法:public String replace(旧字符串, 新字符串)作用:替换字符串内容,原字符串不变,返回新字符串。

    实战案例:敏感词过滤

    import java.util.Scanner;

    public class ReplaceDemo {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入聊天内容:");
    String content = sc.nextLine();
    // 替换敏感词 TMD 为 ***
    String newContent = content.replace("TMD", "***");
    System.out.println("过滤后:" + newContent);
    }
    }

    2.9 字符串切割方法

    方法:public String[] split(String regex)作用:按照指定规则切割字符串,结果存入字符串数组。

    2.10 String 常用方法汇总

    方法功能
    equals() 区分大小写比较内容
    equalsIgnoreCase() 忽略大小写比较内容
    length() 获取字符串长度
    charAt() 根据索引取字符
    toCharArray() 字符串转字符数组
    substring() 截取字符串
    replace() 字符串替换
    split() 字符串切割

    小结

  • String 字符串内容不可变,所有修改操作都会生成新字符串;
  • 常量池共享地址,new对象、变量拼接都会产生新地址;
  • 比较内容优先使用equals,禁止直接用==;
  • 掌握截取、替换、遍历、切割四大常用方法,应对业务开发。

  • 三、StringBuilder 类

    3.1 为什么需要 StringBuilder

    String内容不可变,频繁拼接字符串会不断产生新对象,内存占用高、执行效率低。StringBuilder是可变字符串缓冲区,字符内容可动态修改,专门用于高频字符串拼接场景,性能远优于String。

    3.2 StringBuilder 构造方法

    构造方法功能说明
    public StringBuilder() 创建空字符串缓冲区
    public StringBuilder(String str) 传入字符串,初始化缓冲区内容

    3.3 核心常用方法

    方法功能说明
    append(任意类型) 追加数据,返回自身对象(拼接首选)
    reverse() 反转缓冲区字符内容
    length() 获取字符长度
    toString() 转为普通String对象(互转核心方法)

    3.4 方法基础演示

    public class StringBuilderBase {
    public static void main(String[] args) {
    StringBuilder sb = new StringBuilder();
    // 拼接内容
    sb.append("Java").append(123).append(true);
    System.out.println("拼接后:" + sb);

    // 反转
    sb.reverse();
    System.out.println("反转后:" + sb);

    // 转为String
    String str = sb.toString();
    System.out.println("转为字符串:" + str);
    }
    }

    3.5 案例 1:判断回文字符串

    需求:键盘录入字符串,判断是否为对称回文(如123321、abcba)

    import java.util.Scanner;

    public class Palindrome {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入字符串:");
    String str = sc.next();

    // 借助StringBuilder反转对比
    StringBuilder sb = new StringBuilder(str);
    String reverseStr = sb.reverse().toString();

    if (str.equals(reverseStr)) {
    System.out.println("是回文字符串");
    } else {
    System.out.println("不是回文字符串");
    }
    }
    }

    3.6 案例 2:数组转指定格式字符串

    需求:将int[] arr = {1,2,3} 拼接为 [1, 2, 3] 格式

    public class ArrayJoin {
    public static void main(String[] args) {
    int[] arr = {1,2,3};
    String result = arrayToString(arr);
    System.out.println(result);
    }

    public static String arrayToString(int[] arr) {
    StringBuilder sb = new StringBuilder();
    sb.append("[");
    for (int i = 0; i < arr.length; i++) {
    if (i == arr.length – 1) {
    sb.append(arr[i]);
    } else {
    sb.append(arr[i]).append(", ");
    }
    }
    sb.append("]");
    return sb.toString();
    }
    }

    3.7 String 与 StringBuilder 拼接内存原理

  • String 拼接:每一次+拼接,都会在堆中创建新String对象,频繁拼接内存开销大;
  • StringBuilder 拼接:全程只使用一个缓冲区对象,原地修改内容,不产生额外对象,效率极高。
  • 小结

  • String:内容不可变,适合少量字符串定义、内容对比;
  • StringBuilder:内容可变,高频拼接、反转场景首选;
  • 两类可通过toString()实现互相转换;
  • 核心方法:append()拼接、reverse()反转、length()获取长度。

  • 四、全文总结

    java运行

  • API 概念:Java 官方封装好的类与方法,直接调用即可实现功能;
  • String 类
    • 特性:内容不可变,常量池共享,new/ 变量拼接产生新地址;
    • 核心方法:比较、遍历、截取、替换、切割,业务文本处理必备;
    • 区分:==比地址,equals比内容;
  • StringBuilder 类
    • 定位:可变字符串缓冲区,解决 String 拼接低效问题;
    • 核心方法:append拼接、reverse反转、toString转字符串;
  • 选型建议:少量文本使用String,频繁拼接、动态修改优先使用StringBuilder。
  • String和StringBuilder是 Java 开发、面试高频考点,建议多练习各类方法案例,吃透内存区别与使用场景。

    赞(0)
    未经允许不得转载:171主机测评 » Java 常用 API(String & StringBuilder)超详细整理,从入门到精通
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址