java基础学习笔记2(8.9)

String

equals比较堆里值

字符串比较用str1.equals(str2);

==比较栈里的值

JDK7以后字符串常量池进入了堆里面。

在Java中,StringBufferStringBuilder 是用于创建可变字符串的类。它们提供了比 String 更高效的字符串操作,尤其是在需要频繁修改字符串时。以下是关于如何使用这两个类的详细说明。

1. StringBuffer

StringBuffer 是线程安全的,适合在多线程环境下使用。它的主要方法包括:

  • append(): 在字符串末尾添加内容
  • insert(): 在指定位置插入内容
  • delete(): 删除指定范围的内容
  • reverse(): 反转字符串
示例代码
java 复制代码
public class StringBufferExample {
    public static void main(String[] args) {
        // 创建 StringBuffer 对象
        StringBuffer sb = new StringBuffer("Hello");

        // 添加内容
        sb.append(" World");
        System.out.println("After append: " + sb);

        // 插入内容
        sb.insert(5, ",");
        System.out.println("After insert: " + sb);

        // 删除内容
        sb.delete(5, 6); // 删除逗号
        System.out.println("After delete: " + sb);

        // 反转字符串
        sb.reverse();
        System.out.println("After reverse: " + sb);
    }
}

2. StringBuilder

StringBuilder 是非线程安全的,但在单线程环境中性能更好。它的用法与 StringBuffer 非常相似。

示例代码
java 复制代码
public class StringBuilderExample {
    public static void main(String[] args) {
        // 创建 StringBuilder 对象
        StringBuilder sb = new StringBuilder("Hello");

        // 添加内容
        sb.append(" World");
        System.out.println("After append: " + sb);

        // 插入内容
        sb.insert(5, ",");
        System.out.println("After insert: " + sb);

        // 删除内容
        sb.delete(5, 6); // 删除逗号
        System.out.println("After delete: " + sb);

        // 反转字符串
        sb.reverse();
        System.out.println("After reverse: " + sb);
    }
}

选择使用 StringBuffer 还是 StringBuilder

  • 使用 StringBuffer: 当你需要在多线程环境中安全地操作字符串时。
  • 使用 StringBuilder : 当你在单线程环境中进行大量字符串操作时,StringBuilder 性能更佳。

总结

  • StringBufferStringBuilder 都是可变的字符串类,适合频繁修改字符串的场景。
  • StringBuffer 是线程安全的,适合多线程环境;而 StringBuilder 是非线程安全的,适合单线程环境。
  • 两者提供了类似的方法用于字符串的操作,如 append(), insert(), delete(), 和 reverse()

在Java中,可以使用 String 类的 split() 方法来分割字符串。该方法根据指定的正则表达式将字符串分割成多个子字符串,并返回一个字符串数组。以下是一些常见的使用示例和注意事项。

1. 使用 split() 方法

基本用法
java 复制代码
public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,cherry";
        
        // 使用逗号分割字符串
        String[] fruits = str.split(",");
        
        // 输出结果
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

2. 指定分割次数

split() 方法还可以接受第二个参数,指定返回的数组的最大长度。这个参数可以用来限制分割的次数。

java 复制代码
public class Main {
    public static void main(String[] args) {
        String str = "apple,banana,cherry,dates";
        
        // 只分割成两个部分
        String[] fruits = str.split(",", 2);
        
        // 输出结果
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

3. 使用正则表达式

split() 方法的参数是一个正则表达式,因此你可以使用更复杂的模式来分割字符串。

java 复制代码
public class Main {
    public static void main(String[] args) {
        String str = "apple;banana|cherry,dates";
        
        // 使用正则表达式分割字符串
        String[] fruits = str.split("[;|,]"); // 分割符为 ;、| 和 ,
        
        // 输出结果
        for (String fruit : fruits) {
            System.out.println(fruit);
        }
    }
}

4. 注意事项

  • 空字符串 : 如果字符串以分隔符开始或结束,或者有连续的分隔符,split() 方法会返回空字符串。

  • 正则表达式特殊字符 : 如果分隔符是正则表达式中的特殊字符(如 .*+ 等),需要进行转义。

总结

  • 使用 String.split() 方法可以方便地分割字符串。
  • 可以根据需要指定分割符和分割次数。
  • 注意处理正则表达式的特殊字符和空字符串的情况。
相关推荐
王俊山IT8 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
Yawesh_best1 小时前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
武子康2 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
CXDNW3 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
使者大牙3 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
ssf-yasuo3 小时前
SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
论文阅读·笔记·prompt
As977_3 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi3 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet