JavaSE 基础(十三) String常用方法

本文详细介绍了Java中String类的常用方法,包括字符串构造、比较(等于和大小)、查找、转化(数值和大小写)、数组操作、替换、拆分、截取以及trim函数的使用。重点讲解了字符串的不可变性以及特殊字符处理。
摘要由CSDN通过智能技术生成

目录

前言

一. String常用方法

1. 字符串构造

2. String对象的比较

2.1 比较相不相同

2.2 比较大小

3. 字符串查找

4. 字符串转化

4.1 数值和字符串转化

4.2 大小写转换

4.3 字符串转数组

5. 字符串替换

6. 字符串拆分

7. 字符串的截取

8. trim()

后记


前言

Hi~ 你好! 

欢迎点击我的博客 : )       

这是我的学习总结,希望也能帮助到你

我的博客地址:hi~,我在这里~,欢迎关注哦,

三连不迷路,优质内容持续更新!

一. String常用方法

1. 字符串构造

        String str1 = "String";            使用常量串构造
        String str2 = new String("String");直接newString对象
        char[]arr = {'q','w','e','r'};
        String str3 = new String(arr);     用字符数组构造
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);

        String str = "";
        String str1 = "String";            使用常量串构造
        System.out.println(str1.length());获取字符串长度
        System.out.println(str.isEmpty()); 如果字符串长度为0,返回true,否则返回false
        System.out.println(str1.isEmpty());

        调用的时候,点号前面的字符串类型不一定是变量,也可以是常量
          System.out.println("Hello".length());
            

学一个类的时候要从构造方法开始学习,一个类要实例化对象,就会调用构造方法

String是引用类型,内部并不存储字符串本身 

2. String对象的比较

2.1 比较相不相同

      ==  和  equals方法

equals() 按照数组下标依次比较,比较引用对象的内容是否相同 

        String str1 = "key";
        String str2 = "key";
        String str3 = new String("key");
        String str4 = new String("key");
        System.out.println(str1 == str2);//两个字符串都是取自常量池中,所以为true
        System.out.println(str3 == str4);//false 
        System.out.println(str1 == str3);//false

        System.out.println(str1.equals(str4));//ture 比较两个引用所指向的内容是否一致

 对于基本类型变量,==比较两个变量中存储的值是否相同

 对于引用类型变量,==比较两个引用变量引用的是否为同一个对象

String类重写了父类Objectequals方法,Objectequals默认按照==比较,

String重写equals方法

2.2 比较大小

compareTo方法

equals返回的是boolean类型,而compareTo返回的是int类型

按字典次序比较,当字符不等时,返回这两个字符的差值

当属于另一个的子串时,返回两个字符串长度差
        String str1 = "apple";
        String str2 = "abple";
        String str3 = "appleTree";
        System.out.println(str1.compareTo(str2)); 按照字典序比较
        //返回值为14 str1大于str2 返回整数,小于返回负数,差值为字典序的差 相等返回0;

        System.out.println(str3.compareTo(str1));//str3和str1比较
        //返回值=4,为多出来的字符串长度

        //忽略大小写比较
        String str4 = "AppLe";
        System.out.println(str1.compareToIgnoreCase(str4)); 忽略大小写比较
        //相等返回值=0;
        System.out.println(str1.equalsIgnoreCase(str4));//true

String类实现了Comparable接口,比较大小重写了compareTo方法

按照字典序比较

3. 字符串查找

        String str1 = "distinguish";
        char c = str1.charAt(1);//返回index位置上字符
        System.out.println(c);//1下标,是i
        for (int i = 0; i < str1.length(); i++) {
            System.out.print(str1.charAt(i));//遍历字符串打印
        }
        System.out.println(" ");
        System.out.println(str1.indexOf('s'));//2  返回以一个s出现的位置
        System.out.println(str1.lastIndexOf('s'));  //9  //从后往前开始找字符's',返回索引

        System.out.println(str1.indexOf('s',3));//9
        System.out.println(str1.lastIndexOf('s',8));//2
        // 返回自第8个位置开始,s出现的位置 // 返回'x'第一次出现的位置,没有返回-1

        System.out.println(str1.indexOf("ting"));//3  在主串中找子串出现的位置
        System.out.println(str1.lastIndexOf("is",7));//1

charAt返回index位置上字符

indexOf (ch) 返回ch第一次出现的位置,没有返回-1

lastIndexOf(int ch) 从后往前找,返回ch第一次出现的位置,没有返回-1

以此类推

4. 字符串转化

4.1 数值和字符串转化
    public static void main(String[] args) {
        String str1 = String.valueOf(12345); //数字转字符串
        String str2 = String.valueOf(3.1415); //double
        System.out.println(str1);//12345
        System.out.println(str2);//3.1415
        String str3 = String.valueOf(new Student("we",33));//传一个对象
        System.out.println(str3);//Learn.Student@4554617c
        System.out.println("-------------------");
     //   字符串转数字
        int i = Integer.parseInt(str1);
        double v = Double.parseDouble(str2);
        System.out.println(i);//12345
        System.out.println(v);//3.1415
    }

4.2 大小写转换
 public static void main(String[] args) {
        String str1 = "abcd";
        String str2 = "ABcd";
        System.out.println(str1);//abcd
        System.out.println(str2);//ABcd
        System.out.println(str1.toUpperCase());//ABCD
        System.out.println(str2.toLowerCase());//abcd
    }
4.3 字符串转数组
 public static void main(String[] args) {
        //字符串转数组
        String str1 = "hello";
        char[] charArray = str1.toCharArray();
        System.out.println(Arrays.toString(charArray));//[h, e, l, l, o]
        //数组转字符串
        String str2 = new String(charArray);
        System.out.println(str2);//hello
    }

4.4 格式化输出

    public static void main(String[] args) {
        String str = String.format("%d-%d-%d", 2023,10,7);
        System.out.println(str);//2023-10-7
    }

5. 字符串替换

     public static void main(String[] args) {
        //字符串的替换
        String str1 = "aabbccddaabbccdd";
        String ret1 = str1.replace('a', 'A');//AAbbccddAAbbccdd
        System.out.println(ret1);//替换不是修改原来的,而是产生一个新的对象
        //String实现CharSequence接口,传字符串类型进行向上转型
        String ret2 = str1.replace("bbcc", "qqww");
        System.out.println(ret2);//aaqqwwddaaqqwwdd
        System.out.println(str1.replaceAll("cc","88"));//aabb88ddaabb88dd
        System.out.println(str1.replaceFirst("ccdd","1111"));//aabb1111aabbccdd
        //把第一个出现的xxx替换
        

    }

String实现CharSequence接口,传字符串类型进行向上转型
由于字符串是不可变对象 , 替换不修改当前字符串 , 而是产生一个新的字符串

6. 字符串拆分

从一个完整的字符串之中截取出部分内容 split
    public static void main(String[] args) {
        //字符串的拆分
        String str1 = "do you hear the people sing";
        String[] s1 = str1.split(" ");
        System.out.println(Arrays.toString(s1));//[do, you, hear, the, people, sing]
        String[] s2 = str1.split(" ",3);//限制为最多分三组
        for (int i = 0; i < s2.length; i++) {
            System.out.println(s2[i]);//do
                                     // you
                                     //  hear the people sing
        }

        String str2 = "111.222.333.444.555";
        String[] split = str2.split("\\.");//加\\转义
        System.out.println(Arrays.toString(split));//[111, 222, 333, 444, 555]


    }
    public static void main3(String[] args) {
        String str1 = "111\\222\\333\\444\\555";
        System.out.println(str1);//111\222\333\444\555
        String[] split = str1.split("\\\\");
        System.out.println(Arrays.toString(split));//[111, 222, 333, 444, 555]

    }
     public static void main4(String[] args) {
        String str1 = "222&333=555";
        String[] split = str1.split("&|=");
        System.out.println(Arrays.toString(split));//[222, 333, 555]
    }

     public static void main(String[] args) {
        //多次分割
        String str1 = "2*3=3*2=1*6=6*1";
        String[] split1 = str1.split("=");
        for (int i = 0; i < split1.length; i++) {
           // System.out.println(split1[i]);
            String[] split = split1[i].split("\\*");
//            for (int j = 0; j < split.length; j++) {
//                System.out.println(split[j]);
//            }
            for (String x:split) {
                System.out.println( x);
            }
        }
    }

字符"|","*","+"都得加上转义字符,前面加上 "\\"

如果是 "\" ,那么就得写成 "\\\\"    如果一个字符串中有多个分隔符,可以用 "|" 作为连字符

7. 字符串的截取

从一个完整的字符串之中截取出部分内容
  public static void main(String[] args) {
        String str1 = "abcdefg";
        String substring1 = str1.substring(3);
        System.out.println(substring1);//defg  从3开始一直到截取完所以字符
        String substring2 = str1.substring(2, 6);
        System.out.println(substring2);//cdef 左闭右开  //返回新的字符串对象
    }

1. 索引从0开始  

2.左闭右开

8. trim()

去掉字符串中的左右空格,保留中间空格

 

     public static void main(String[] args) {
        String str = "   String test    ";
        String trim = str.trim();//去掉字符串中的左右空格,保留中间空格
        System.out.println(trim);//String test
     }

trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符...) 

后记

看到这里,希望能帮到你~

您的点赞 ,收藏 ,关注 是我创作的最大动力!

同时也欢迎在评论区进行交流,共同进步~       

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值