Java学习day_08之字符串

Java字符串学习:创建、比较与处理

一、字符串概述

1.String是Java定义好的一个类,定义在java.lang包中,使用时可以直接调用
2.Java程序中的所有字符串文字(例如"abcdefg")都被视为此类的对象。
3.字符串不可变,它们的值在创建后不能更改任何看似修改字符串的操作(如拼接、替换等)实际上都会生成一个新的字符串对象,而原始字符串保持不变。

不可变性示例:

String s1 = "Hello";
s1 = s1 + " World";
System.out.println(s1);

虽然看起来s1被修改,但实际上创建了一个新字符串对象,原始"Hello"未被改变。

  • 原始的"Hello"对象始终存在于常量池中,并没有被修改
  • 新增的" World"对象也会保存在常量池
  • 拼接产生的"Hello World"是一个全新的对象,位于堆中

二、创建String对象的两种方式

1.直接赋值
String name = “csdn”;
2.new 构造函数方式

构造方法说明
public String()创建空白字符串,不含任何内容
public String(String original)根据传入的字符串,创建字符串对象
public String(char[] chs)根据字符数组,创建字符串对象
public String(byte[] chs)根据字节数组,创建字符串对象
public class StringDemo1 {
    public static void main(String[] args) {

        //1.使用直接赋值获取一个字符串对象
        String s1 = "zzz";
        System.out.println(s1);

        //2.使用new的方式获取一个字符串对象
        //空参构造:可以获取一个空白的字符串对象
        String s2 = new String();
        System.out.println("@" + s2 + "!");

        //传递一个字符串,根据传递的字符串内容再创建一个新的字符串对象
        String s3 = new String("zxp");
        System.out.println(s3);

        //传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
        char[] chs = {'a','b','c','d'};
        String s4 = new String(chs);
        System.out.println(s4);

        //传递一个字节数组,根据字节数组内容再创建一个新的字符串对象
        //进入ASCII码中查找该字值代表的字符
        byte[] bytes = {97,98,99,100};
        String s5 = new String(bytes);
        System.out.println(s5);
    }
}

在这里插入图片描述

三、字符串的比较

关于==比较的内容
1.基本数据类型比较的是数据值

int a = 10;
int b = 10;
System.out.println(a == b);//true

2.引用数据类型比较的是地址值

String s1 = "abc";
String s2 = "abc";
System.out.println(a == b);//true

这时结果会是 true,因为 Java 会把字符串字面量放入字符串常量池,相同内容的字面量会指向常量池中的同一个对象。

String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(a == b);//false

这时结果为false,s1和s2分别是使用 new String() 创建的是不同对象,地址不同,因此 == 比较结果为 false。

3.当希望比较字符串值的时候,可以选择以下方法

方法作用
boolean equals方法(要比较的字符串)完全一样结果才是true,否则为false
boolean equalsIgnoreCase方法(要比较的字符串)在上述的基础上忽略大小写的比较
public class StringDemo2 {
    public static void main(String[] args) {
        //1.创建两个字符串对象
        String s1 = new String("abc");
        String s2 = "Abc";

        //2.==号比较
        //基本数据类型:比的是数据值
        //引用数据类型:比的是地址值
        System.out.println(s1 == s2);

        //3.比较字符串对象中的内容是否相等
        boolean result = s1.equals(s2);
        System.out.println(result);//false

        //4.比较字符串对象中的内容是否相等,忽略大小写
        boolean result1 = s1.equalsIgnoreCase(s2);
        System.out.println(result1);//true
    }
}

四、StringBuilder

1.定义:StringBuilder 是 Java 中用于高效处理字符串的可变字符序列类。与 String 类不同,StringBuilder 允许直接修改内容而无需创建新对象,适合频繁拼接、插入或删除字符串的场景。
2.StringBuilder的构造方法

方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含任何内容
public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象
 StringBuilder sb = new StringBuilder("abc");
 System.out.println(sb);//abc

3.StringBuilder常用方法

方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverser()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString()就可以实现把StringBuilder转换为String
public class StringBuilderTest1 {
    public static void main(String[] args) {
        //1.创建对象
        StringBuilder sb = new StringBuilder();

        //2.添加字符串
        sb.append("aaa").append("bbb").append("ccc");
        //3.再把StringBuilder变回字符串
        String str = sb.toString();
        System.out.println(str);//aaabbbccc
    }
}

五、StringJoiner

1.定义:StringJoiner 是 Java 8 引入的一个工具类,用于高效拼接字符串,支持自定义分隔符、前缀和后缀。它简化了字符串拼接的代码,特别适合处理集合或数组元素的拼接需求。
2.StringJoiner的构造方法

方法名说明
public StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号

3.StringJoiner的成员方法

方法名说明
public StringJoiner add(添加的内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接之后的结果)
import java.util.StringJoiner;

public class StringJoinerDemo {
    public static void main(String[] args) {

        //创建对象
        StringJoiner sj = new StringJoiner(",","[","]");

        //添加元素
        sj.add("aaa").add("bbb").add("ccc");
        
        //长度
        System.out.println(sj.length());
        System.out.println(sj);
    }
}

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值