Sring

本文详细解读了Java中的String类,介绍了其不可变特性、多种构造方法,比较字符串的方法,并剖析了StringBuilder的可变性及其使用。同时涵盖了字符串池的概念,以及String与StringBuilder之间的转换技巧。
摘要由CSDN通过智能技术生成

string类代表所有字符串--java中的所有双引号字符串都是string类的对象

字符串特点:a-创建的值不可改变,但是可以被共享

b--字符串效果上相当于字符数组char[],但是底层原理是字节数组byte[]

String的常用构造方法

public String() ------创建一个空白字符串对象,不含任何内容

public String(char[] chs)-----根据一个字符数组内容 来创建字符串对象

public String(byte []bys)---根据一个字节数组的内容来创建字符串对象

String s ="abc"------直接赋值创建字符串对象,

public class StringDemo01 {
    public static void main(String[] args) {
        //public String() ------创建一个空白字符串对象,不含任何内容
        String s = new String();
        System.out.println("s:"+s);

        //public String(char[] chs)-----根据一个字符数组内容 来创建字符串对象
        char[] chs ={'a','b','c'};
        String s2 =new String(chs);
        System.out.println(s2);


        //public String(byte []bys)---根据一个字节数组的内容来创建字符串对象
        byte[] bys ={97,98,99};
        String s3 =new String(bys);
        System.out.println(s3);


        //String s ="abc"------直接赋值创建字符串对象
        String s4 ="abc";
        System.out.println(s4);
    }
}

String 对象的特点

1.通过new每一次创建字符串对象,每一次new都会开辟一个内存空间,如果内容是相同的,但是地址是不同的

2.以双引号""给出的字符串,只要字符串序列相同(顺序和大小写相同),无论出现多少次,jvm虚拟机都只会创建一个String对象,并在字符串池中维护

 String 字符串的比较

用==做比较

基本类型:比较的是数据值是否相同

引用类型:比较的是地址值是否相同

比较字符串的内容:字符串是对象,用一个equals方法来实现比较字符串内容是否相同

public boolean equals(objec anobject) 将此字符串与指定对象进行比较,因为我们比较的是字符串对象,所以参数直接传一个字符串

package String;
//用==做比较
public class StringDemo02 {
    public static void main(String[] args) {
        //构造方法的方式得到对象
        char[] chs ={'a','b','c'};
        String s1 = new String(chs);
        String s2 =new String(chs);
        //直接赋值的方式得到对象
        String s3 = "abc";
        String s4 = "abc";
        //比较字符串对象地址是否相同
        System.out.println(s1==s2);//false
        System.out.println(s1==s3);//false
        System.out.println(s3==s4);//true
        //比较字符串内容是否相同
        System.out.println(s1.equals(s2));//true
        System.out.println(s1.equals(s3));//true
        System.out.println(s3.equals(s4));//true

遍历字符串通用格式

for(int i=0;i<s.length();i++){
    s.charAT(i)//指定索引处的字符值

StringBuilder概述

StringBuilder是一个可变的字符串类,我们可以把它看做一个容器,StringBudiler对象里面的字符串内容是可以改变的

String 和StringBuilder的区别

String里面的内容不可变的

StringBuilder里面的内容是可变的 

StringBuilder的构造方法

public StringBuilder----创建一个空白可变字符串对象,不含有任何内容

public StringBuilder(String str)--根据字符串内容,创建可变字符串对象

package String;
//StringBuilder的构造方法
public class StringBuilderDemo {
    public static void main(String[] args) {
        //public StringBuilder----创建一个空白可变字符串对象,不含有任何内容
        StringBuilder sb =new StringBuilder();
        System.out.println("sb"+sb);
        System.out.println(sb.length());
//public StringBuilder(String str)--根据字符串内容,创建可变字符串对象
        StringBuilder sb2 =new StringBuilder("123456");
        System.out.println(sb2);
        System.out.println(sb2.length());
    }

}

 StringBuilder的添加与反转

package String;
//StringBuilder的添加与反转
public class StringBuilderDemo03 {
    public static void main(String[] args) {
        StringBuilder sb =new StringBuilder();
       // public StringBuilder append(添加数据)--添加任何类型,并返回对象本身
        sb.append("你好").append("在家").append("吃饭").append("然后睡觉");
        System.out.println(sb);
        //public StringBuilder reverse();反转字符串,---就是返回相反的字符序列
        sb.reverse();
        System.out.println(sb);

    }
}

String和StringBuilder的相互转换

package String;
//String和StringBuilder相互转换
public class StringBuilderDemo04 {
    public static void main(String[] args) {
        //StringBuilder转换为String--public String toStringg():
        //通过重写tostring方法实现
        StringBuilder s= new StringBuilder();
        s.append("你好");
        String sb = s.toString();
        System.out.println(sb);
        //String转换为SttirnBuilder:public StringBuilder(string s)
        //通过构造方法来实现
        String s1="你好";
        StringBuilder s2 =new StringBuilder(s1);
        System.out.println(s2);
     }
}

应用案例演示: 字符串拼接/字符串反转升级版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值