常用类---String类

String类

String类、StringBuilder类、StringBuffer类是三个字符串相关类。String类是的对象代表不可变的字符序列,StringBuilder类和StringBuffer类代表可变字符序列

理解String类源码

  • String类底层是一个字符数组value。各种方法的操作其实都是对该数组的操作。

  • String类的equals()方法其实就是比较底层的字符数组的各个元素是否相同,只要发现一个字符不相同,就返回false。如果所有字符都相同,返回true。但是如果两个变量指向了同一个字符数组,直接返回true。

  • String类的concat()是创建一个新的字符数组,存放原来字符数组和新加入的字符数组内容,然后以该新数组创建一个新的字符串。

String类的使用(一):

package com.bisxt.string;

import java.lang.String;

import java.util.Arrays;

public class TestString1 {
    
    
    public static void main(String[] args) {
    
    
        //1.创建一个字符串对象
        //String str = "张永昌";
        String str = new String("张永昌abC");

        //2.操作这个字符串对象
        //2.1最基本的操作
        System.out.println(str.length());//字符的个数而不是字节的个数
        System.out.println(str.isEmpty());
        System.out.println(str.startsWith("张"));
        System.out.println(str.endsWith("b"));
        System.out.println(str.toUpperCase());
        System.out.println(str.toLowerCase());
        //String是不可变字符序列,但是可以改变引用的指向
        str=str.toLowerCase();
        System.out.println(str);
        str=str.toUpperCase();
        System.out.println(str);
        System.out.println(str.contains("张永昌ABC"));

        //2.2根据索引确定字符串
        //索引的范围是0-MaxLength
        char ch=str.charAt(3);
        System.out.println(ch);
        String substr = str.substring(3, 6);
        System.out.println(substr);

        //2.3根据子串确定索引
        int index = str.indexOf("A");
        System.out.println(index);

        str = "北京尚学堂bjsxtbjsxtbj";
        index=str.indexOf("sxt",8);
        System.out.println(index);//12
        index = str.indexOf("sxt", 13);
        System.out.println(index);//-1 表示不存在

        //lastIndexOf表示从后往前找,但是索引顺序还与IndexOf一样,它们只是查找的方向不同
        index = str.lastIndexOf("sxt");
        System.out.println(index);//12

        //2.4其他方法
        str=str.replaceAll("bj","BJ");
        System.out.println(str);//北京尚学堂BJsxtBJsxtBJ

        str="   bj  sxt    ";
        System.out.println(str.length());//14
        str=str.trim();//trim()只能去掉两端的空格,字符串中间的空格去不掉
        System.out.println(str.length());//7 "bj  sxt"

        //String--->byte[]
        str = "北京尚学堂bjsxt";
        byte[] bytes = str.getBytes();
        System.out.println(bytes);//[B@4554617c
        System.out.println(bytes.length);//20  =5*3+5即一个汉字在Utf-8编码中站三个字节,英文还是一个字节
        System.out.println(Arrays.toString(bytes));//[-27, -116, -105, -28, -70, -84, -27, -80, -102, -27, -83, -90, -27, -96, -126, 98, 106, 115, 120, 116]

        //String<---byte[]
        String str2 = new String(bytes);
        System.out.println(str2);//北京尚学堂bjsxt

        str2 = new String(bytes, 6, 9);
        System.out.println(str2);//尚学堂
    }
}

String类的使用(二):

package com.bisxt.string;

public class TestString2 {
    
    
    public static void main(String[] args) {
    
    
        //1.创建一个字符串对象并进行字符串操作
        String str1 = new String("bjsxt");
        String str2 = new String("bjsxt");
        System.out.println(str1==str2);//false
        System.out.println(str1.equals(str2));//true

        //2.创建一个字符串对象并进行字符串操作
        String str3 = "bjsxt";
        String str4 = "bjsxt";
        String str5=str3;
        System.out.println(str3.equals(str5));//true
        System.out.println(str3==str4);//!!!true
        System.out.println(str3.equals(str4));//true

        //3.注意空字符串""和null的区别
        String str6="";
        String str7=null;
        System.out.println(str6.length());//0

        try {
    
    
            System.out.println(str7.length());//NullPointerException
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }

        //4.String类的缺点:字符串的拼接时,要创建多个字符串对象
        String str="中国";
        str=str.concat("北京");
        str=str.concat("大兴区");
        str=str.concat("亦庄开发区");
        str=str.concat("北京尚学堂");
        System.out.println(str);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40836864/article/details/113475263
今日推荐