String类特点及常使用方法

String类是由多个字符组成的一串数据. 值一旦创建不可改变. 一旦值改变就会创建一个新对象。

为什么不可改变?通过查看String内部代码发现

存放数据的是一个被final修饰的char字符数组,被final修饰的数据类型,只能在创建时赋值,或者通过外部赋值构造方法赋值,且赋值后不可以在进行改变。所以当对当前字符串进行处理后,往往需要创建一个新的String对象类接收改变值。

1.简化的字面量创建方式:

 String s = "abc";
 String s1 = "abc";
 System.out.println(s==s1);//true
 System.out.println(s.equals(s1));//true


先去字符串常量池中查找,有没有abc,如果没有就在字符串常量中创建一个对象(abc),如果字符串常量中已经存在abc,那么直接指向已有的对象即可。


2.使用new关键字去创建

/*
 new +构造方法
 凡是new 出来的,在内存空间中是独一无二的.
 */
 String s3 = new String("abc");


若使用new进行创建则会产生一个新的字符串对象,即使内容和字符串常量池中的相同也会重新分配对象地址,若创建的对象内容在常量池中没有时,则先在常量池中创建,然后再在堆中进行创建,并返回堆中的地址。

String常用的方法

1.判断功能

        String s1 = "abc";
        String s2 = new String("abC");
        System.out.println(s1.equals(s2));//比较字符串内容是否相等
        System.out.println(s1.equalsIgnoreCase(s2));//比较字符串内容是否相等(忽略大小写)

        System.out.println(s1.contains("c"));//是否包含指定的子串
        System.out.println(s1.isEmpty());//判断是否为""
        System.out.println(s1.startsWith("ab"));//判断以指定字符串开头
        System.out.println(s1.endsWith("bc"));//判断以指定字符串结尾

        String s3 = "abc";
        String s4 = "efg";
        System.out.println(s3.compareTo(s4));//字符串比大小

2.获取功能

        String s = "abcdefgd";
        //          01234567
        System.out.println(s.length());

        char c = s.charAt(4);//获取指定位置(索引)的字符
        System.out.println(c);

        int index = s.indexOf("d");//从前向后找 只找首次出现的位置
        System.out.println(index);

        int index1 = s.indexOf("d",index+1);//从前向后找 从指定位置开始
        System.out.println(index1);

        int index2 = s.lastIndexOf("d");//从后向前查找,首次出现的位置
        System.out.println(index2);

        String s1 = "abcdefgd";
        //           01234567

        String s2 =  s1.substring(3);//从指定的为开始截取字符串,直接到最后一位,最终返回一个新的字符串对象
        System.out.println(s1);
        System.out.println(s2);

        String s3 = s1.substring(2,6);//截取指定区间 包含开始位置,不包含结束位置
        System.out.println(s3);

3.转换功能

        String s = "abcd";
        char[] chars =  s.toCharArray(); //将字符串转换为一个新的char数组
        System.out.println(Arrays.toString(chars));

        String s1 =  new String(chars); //将char数组 转为字符串
        System.out.println(s1);
        String s2 =  String.valueOf(chars);
        System.out.println(s2);

        String s3 = "abcdEFG一";
        System.out.println(s3.toUpperCase());//转大写
        System.out.println(s3.toLowerCase());//转小写


        String s4 = s3.concat("11");  // + 可以连接其他类型
        System.out.println(s4);

        String s5 = "ab&cde&efg";
        String[] strings = s5.split("&");//按照指定的分隔符,将字符串拆分为数组
        System.out.println(Arrays.toString(strings));

 4.替换功能

 String replace(char old,char new)  可以替换规定的字符 
 String replace(String old,String new)  可以替换规定的字符串 
 replaceAll(String regex, String replacement)
 replaceFirst(String regex, String replacement)
 去除字符串两空格 String trim()

猜你喜欢

转载自blog.csdn.net/weixin_57197500/article/details/128050431
今日推荐