带你快速掌握Java中的String类和StringBuffer类(详解常用方法 | 区别 )

本文介绍了Java中字符串操作的常用方法,如获取长度、字符操作、索引查找、字符串转换、拼接、分割、替换以及String和StringBuffer类的区别,重点讲解了这两种类在处理字符串时的特性和适用场景。
摘要由CSDN通过智能技术生成

String类


1.获取功能的常用方法

int length( )          获取字符串长度

char charAt( )      获取指定位置上的字符

int indexOf( )        获取字符首次出现的位置,也可以从指定位置开始查找

lastIndexOf( )       从后往前找

String substring( )    从指定位置开始截取一个字符串副本

 public static void main(String[] args) {
        //获取功能
        String s1 = "abcdabcd";

        //int length() 获取字符串长度
        System.out.println(s1.length());   // 8
        
        //char charAt() 获取指定位置上的字符 
        System.out.println(s1.charAt(4));  //索引4对应的字符 a
        
        //int indexOf() 获取字符首次出现的位置
        System.out.println(s1.indexOf("a"));  //注意是首次出现的位置
        
        //int indexOf(str:  ,fromindex: )   从指定位置开始查找
        System.out.println(s1.indexOf("a",4));
        
        //lastIndexOf() 从后往前找
        System.out.println(s1.lastIndexOf("a"));
        
        //String substring() 从指定位置开始截取一个字符串副本
        String s2=s1.substring(2,6);   //截取索引2~6的字符串(不包含索引6对应的字符)
        System.out.println(s2);     //   2 <= res < 6

    }

2.转换功能的常用方法

String toUpperCase( )      将字符串内容全部转换为大写

String toLowerCase( )      将字符串内容全部转换为小写

String concat(String str)   拼接指定字符串内容到原字符串末尾

String [ ] split(分割符)       通过分割符将字符串分割并以数组形式返回

public static void main(String[] args) {

        String s1="WoShiChinese";
        System.out.println(s1.toUpperCase()); //转大写
        System.out.println(s1.toLowerCase()); //转小写

        String s2 ="我爱中国";
        System.out.println(s2.concat(s1));  //拼接s1字符串内容到s2字符串末尾

        //String[] split(分割符)
        String s3 = "张三:中国人;"+"Tom:英国人;"+"梅西:阿根廷人;";
        String[] strings = s3.split(";");  //通过" ; "来截取s3字符串
        System.out.println(Arrays.toString(strings));
    }

3.替换功能的常用方法

String replace(char old,char new)           单个字符替换

String replace(String old,String new)      整个字符串替换

replaceAll(String regex, String replacement)      替换字符串中所有数字

replaceFirst(String regex, String replacement)   替换字符串中第一个数字

 public static void main(String[] args) {
        String s1 = " ab5cd7bda";
        //用"A"替换字符串中所有的"a"
        System.out.println(s1.replace("a","A"));
        //用"G"替换字符串中所有数字       \\d表示所有字符串中所有的数字
        System.out.println(s1.replaceAll("\\d","G"));
        //用"R"替换字符串中第一个数字
        System.out.println(s1.replaceFirst("\\d","R"));
    }

4.去除字符串两端空格

String trim( )     去除字符串两端空格(字符串中间的空格不能去除

public static void main(String[] args) {
        
        //String trim() 去除字符串两端空格

        String s2 =" abcEF 13aD1 ";
        System.out.println(s2);
        System.out.println(s2.length());         //原字符串长度
        System.out.println(s2.trim());//去除两端空格,字符串中间的空格不能去除
        System.out.println(s2.trim().length());  //去除空格后字符串的长度

    }

StringBuffer类

需要注意:

String可以直接创建字符串对象,而StringBuffer不能,需要新创建一个字符串对象。

          String s1 = "abc";
          StringBuffer s2 = new StringBuffer("abc");

添加功能

public StringBuffer append(String str)         在原字符串末尾添加字符串

public static void main(String[] args) {

        StringBuffer s1 = new StringBuffer("abc");
        s1.append("def");         // 不能使用+=
        System.out.println(s1);
    }

输出:abcdef

public StringBuffer insert(int offset,String str)    向指定位置插入字符串

public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("abc");
        //向字符串s1末尾添加"def"
        s1.append("def");         // 不能使用+=
        System.out.println(s1);

        //向指定位置插入字符串
        s1.insert(1,"ABC");  //向索引为1的位置插入字符串"ABC"
        System.out.println(s1);
    }

输出:aABCbcdef

删除功能

public StringBuffer deleteCharAt(int index)      删除单个字符

public StringBuffer delete(int start,int end)       删除指定区间的元素,不包含结尾

public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("abcdef");
        s1.deleteCharAt(2);  //删除索引为2的字符
        System.out.println(s1);

        //删除指定区间的元素,不包含结尾
        StringBuffer s2 = new StringBuffer("ABCDEF");
        s2.delete(1,3);
        System.out.println(s2);
    }

替换功能

public StringBuffer replace(int start,int end,String str)

StringBuffer s1 = new StringBuffer("abcdef");
        s1.replace(0,3,"ABC");
        System.out.println(s1);

输出:ABCdef

反转功能

public StringBuffer reverse( )

StringBuffer s1 = new StringBuffer("abcdef");
        s1.reverse();   //反转
        System.out.println(s1);

输出:fedcba

截取功能

从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变

public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("abcdef");
        //从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变
        String s2=s1.substring(1,4);
        System.out.println(s1);
        System.out.println(s2);
    }

 

StringBuffer和String的区别

String修饰的字符串是一个值不能改变的字符串,用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间。


StringBuffer是内容可以改变的字符串,值可以改变且不需要创建新对象,在多任务执行时是安全的适合单线程。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值