java String类

String类概述

String 类代表字符串,Java 程序中的所有字符串文字(例如“aaa”)都被实现为此类的实例。也就是说,Java 程序 中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,使用的时候不需要导包!

String类的特点

  • 字符串不可变,它们的值在创建后不能被更改
  • 虽然 String 的值是不可变的,但是它们可以被共享
  • 字符串效果上相当于字符数组( char[] ),但是底层原理是字节数组( byte[] )

String类的常用构造方法

  • String s = “aaa”; 这个不是构造方法,直接赋值的方式创建字符串对象,内容就是abc

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

  • public String(char[] chs) 根据字符数组的内容,来创建字符串对象

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

    还有一些重载的构造方法,就不一一写出来了

接下来我们挨个演示一下

public class StringConstructor {

    public static void main(String[] args) {

        //String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
        String str1 = "abc"; System.out.println("str1:" + str1);

        //public String();   创建一个空白字符串对象,不含有任何内容
        String str2 = new String();
        System.out.println("str2:" + str2);  //这里输出是空的

        //public String(char[] chs);   根据字符数组的内容,来创建字符串对象
        char[] chs = {'h', 'e', 'l', 'l', 'o'};
        String str3 = new String(chs);
        System.out.println("str3:" + str3);

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

    }
}

通过new创建出来的字符字符串和直接赋值创建的字符串是有区别的:

通过构造方法创建

通过 new 创建的字符串对象,每一次 new 都会申请一个内存空间,虽然内容相同,但是地址值不同

直接赋值方式创建

以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM 都只会建立一 个 String 对象,并在字符串池中维护

字符串的常用方法

  • public char charAt(int index); 返回指定索引处的char值
  • public String concat(String str); 将指定字符串连接到该字符串的末尾
  • public int indexOf(String str); 返回指定字符串出现在该字符串第一次出现的索引
  • public int length(); 返回该字符串的长度
  • public boolean isEmpty(); 判断是否为空,为true相当于length() 等于0
  • public String replace(CharSequence target, CharSequence replacement); 替换指定的字符串
  • public String[] split(String regex); 按照指定字符串切割,返回切割后的字符串数组
  • public String subString(int beginIndex); 按照索引截取字符串,包前不包后
  • public String subString(int beginIndex,int endIndex); 按照开始索引截取字符串结束索引位置,包前不包后
  • public char[] toCharArray(); 将字符串转换为char数组
  • public String toLowerCase(); 将字符串转换为小写
  • public String toUpperCase(); 将字符串转换为大写
  • public String trim(); 去除该字符串的前后空格
  • public static String valueOf(int i); 将指定类型转换为String
  • public boolean equals(Object anObject); 比较字符串的内容,严格区分大小写
  • public boolean equalsIgnoreCase(Object anObject); 比较字符串的内容,不区分大小写

以上对字符串进行操作的方法都不会影响原来的字符串,只会返回一个新的字符串

接下来我们挨个演示下:

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

        String str = "HelloWorld";

        //charAt   返回指定索引处的char值
        char c = str.charAt(1);   //返回1索引处的char值
        System.out.println(c);  //输出 e  刚好对应str1字符串的1索引位置

        //concat  将指定字符串连接到该字符串的末尾
        String concat = str.concat(",haha"); //将指定字符串 “,haha” 连接到该字符串的末尾
        System.out.println(concat);  //输出  HelloWorld,haha

        //indexOf  返回指定字符串出现在该字符串第一次出现的索引
        int i = str.indexOf("W");  //查找字符串“W”出现在该字符串第一次出现的索引
        System.out.println(i);  //输出 5
        int i2 = str.indexOf("Hello");  //查找字符串“Hello”出现在该字符串第一次出现的索引
        System.out.println(i2);  //输出 0   “Hello”在str字符串中出现的第一次位置就是0索引

        //length  返回该字符串的长度
        System.out.println(str.length());  //输出 10  获取str字符串的长度

        //isEmpty  判断是否为空,为true相当于length() 等于0
        boolean empty = str.isEmpty();   //判断str字符串是否为空
        System.out.println(empty);  //输出 false  不是空的
        String xx = new String();
        System.out.println(xx.isEmpty());  //输出  true  这是一个空字符串

        //replace  替换指定的字符串
        String s = "aBc";
        String replace = s.replace("B", "b");   //用指定的字符串“b”替换该字符串里面的“B”
        System.out.println(replace);  //输出结果  abc

        //split  按照指定字符串切割,返回切割后的字符串数组
        String s2 = "AA,BB,CC";
        String[] split = s2.split(",");  //按照“,”切割字符串
        //遍历切割后的字符串数组
        for(String st:split){
            System.out.println(st);
        }

        //subString(一个参数)  从索引位置截取字符串后面所有的内容,包前
        String substring = str.substring(5);
        System.out.println(substring);  //输出 World

        //subString(两个参数)  按照开始索引截取字符串结束索引位置,包前不包后
        String substring2 = str.substring(0,5);  //从索引0开始截取,截取到第5索引,但是不包括5索引位置的元素
        System.out.println(substring2);  //输出 Hello

        //toCharArray  将字符串转换为char数组
        char[] chars = str.toCharArray();//将str转换为char型数组
        //遍历转换后的char型数组
        for(char c2 : chars){
            System.out.println(c2);
        }

        //toLowerCase  将字符串转换为小写
        String s3 = "ABC";
        String lowerCase = s3.toLowerCase();
        System.out.println(lowerCase);  //输出结果  abc

        //toUpperCase  将字符串转换为大写
        String s4 = "abc";
        String upperCase = s3.toUpperCase();
        System.out.println(upperCase);  //输出结果  ABC


        //trim  去除该字符串的前后空格
        String s5 = "     哈哈       ";
        System.out.println("没有去除前后空格前:" + s5);  //输出:没有去除前后空格前:     哈哈
        String trim = s5.trim();
        System.out.println("没有去除前后空格前:" + trim);  //输出:没有去除前后空格前:哈哈

        //valueOf 这是静态方法   将指定类型转换为String
        String v1 = String.valueOf(10);  //将int转为字符串
        System.out.println(v1);
        System.out.println(v1 instanceof String);  //判断是否是String类型  true

        String v2 = String.valueOf(10.01);  //将double转为字符串
        System.out.println(v2);
        System.out.println(v1 instanceof String);  //判断是否是String类型  true
        //...
        
        //equals   比较字符串的内容,严格区分大小写
        String e1 = "AAA";
        String e2 = "aaa";
        String e3 = "AAA";
        System.out.println(e1 == e2);  //false  双等号比较的是地址值
        System.out.println(e1.equals(e2));  //false
        System.out.println(e1.equals(e3));  //true

        //equalsIgnoreCase   比较字符串的内容,不区分大小写
        System.out.println(e1.equalsIgnoreCase(e2));  //true
        System.out.println(e1.equalsIgnoreCase(e3));  //true
    }


}

以上就是字符串的一些常用的方法了,还有很多字符串的方法没有写出来,这个需要自己去看API文档了哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值