Java常用类String

字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

1.String是final的类,不可被继承,底层是char类型的数组

创建字符串的方式

String str1 = "Hello";//因为String类是final的,所以直接赋值的形式是str1指向常量。和基本数据类型一致,指向常量池
                 
String str2 = new String("Hello");//new创建的字符串对象在堆上;和引用数据类型一致,str2指向对象地址

String str3 = "Hell"+"o";//此时的str3依旧指向常量,编译器编译过程提前识别

String str4 = str1 +str3;//虽然str1和str3都是常量,但编译器不会提前识别,此时的str4指向对象地址

2.length() ->获取字符串的长度
public class Main {
    public static void main(String[] args) {
        String str1 = "aabbcc";
        int l = str1.length();
        System.out.println(l);
    }
}
执行结果:
6

3.cancat(String str) ->拼接字符串
public class Main {
    public static void main(String[] args) {
        String str1 = "aabbcc";
        String str2 = "ddeeff";
        String str3 = str1.concat(str2);
        System.out.println(str3);
    }
}
执行结果:
aabbccddeeff

实际情况更多使用"+"进行拼接,每一次拼接完都是新生成的String实例

public class Main {
    public static void main(String[] args) {
        String str1 = "aabbcc";
        String str2 = "ddeeff";
        String str3 = str1+str2;
        System.out.println(str3);
    }
}
执行结果:
aabbccddeeff

4.charAt(int index) ->返回指定索引位置的字符,索引范围从0到length()-1
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        char c = str1.charAt(1);
        System.out.println(c);
    }
}

执行结果:
b

5.int compareTo(String str) ->对字符串排序,将两个要字符串变成char[],从0索引位开始比较,当字符不同时返回差值,此时传入参数需要区分大小写,Z<a
public class Main {
    public static void main(String[] args) {
        String str1 = "bbcca";
        String str2 = "bbccZ";
        int i = str1.compareTo(str2);
        System.out.println(i);
        System.out.println('a'-'Z');
    }
}
执行结果:
7
7

int compareToIgnoreCase(String str) ->对字符串排序,将两个要字符串变成char[],从0索引位开始比较,当字符不同时返回差值,此时传入参数不需要区分大小写,Z>a
public class Main {
    public static void main(String[] args) {
        String str1 = "bbcca";
        String str2 = "bbccZ";
        int i = str1.compareToIgnoreCase(str2);
        System.out.println(i);
        System.out.println('a'-'z');
    }
}
-25
-25


6.static String copyValueOf(char[] c) -> String类中的静态方法,使得字符数组转成字符串。后面可以跟上两个int类型的索引指定返回的字符串内容。
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        char [] c = new char[]{'a','b','c','d','e'};
        String str2 = String.copyValueOf(c);
        //第二个参数时索引位置,第三个参数是偏移量
        String str3 = String.copyValueOf(c,1,3);
        System.out.println(str2);
        System.out.println(str3);
    }
}
执行结果:
abcde
bcd

7.boolean startsWith(String prefix) ->判断字符串是否以指定前缀开始
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        boolean flag1 = str1.startsWith("ab");
        boolean flag2 = str1.startsWith("ac");
        System.out.println(flag1);
        System.out.println(flag2);
    }
}
执行结果:
true
false

boolean endsWith(String suffix) ->判断字符串是否以指定后缀结尾
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        boolean flag1 = str1.endsWith("cc");
        boolean flag2 = str1.endsWith("cd");
        System.out.println(flag1);
        System.out.println(flag2);
    }
}
执行结果:
true
false

8.boolean equals(Object anObject) ->比较两个字符串内容是否相等,传入参数需要考虑大小写。该方法重写了Object的equals方法
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        String str2 = new String("abbcc");
        //==比较的是对象内存地址
        System.out.println(str1 == str2);
        //比较的String对象内的具体char[]的每一位的值是否相等
        System.out.println(str1.equals(str2));
    }
}
执行结果:
false
true

boolean equalsIgnoreCase(String anotherString)  ->比较两个字符串内容是否相等,传入参数不需要考虑大小写。
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        String str2 = new String("Abbcc");

        System.out.println(str1.equals(str2));
        System.out.println(str1.equalsIgnoreCase(str2));
    }
}
执行结果:
false
true

9.byte[] getBytes() ->返回字符串byte类型的数组
public class Main {
    public static void main(String[] args) {
        String str1 = "abbcc";
        byte[] b = str1.getBytes();
        for(int i = 0;i<b.length;i++){
            System.out.print(b[i]);
            System.out.print("|");
        }
    }
}
执行结果:
97|98|98|99|99|

10.void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) ->将字符串从srcBegin位置到srcEnd位置间的字符逐个插入到char[] dst中,第一个插入位置是dstBegin
public class Main {
    public static void main(String[] args) {
        String str1 = "bbcca";
        char[] c = new char[4];
        for(int i = 0;i<c.length;i++){
            System.out.print(c[i]);
            System.out.print("|");
        }
        System.out.println();
        //第一个参数:需要复制的字符串起始索引;(包含当前索引位置的字符)
        //第二个参数:需要复制的字符串结束索引;(不包含当前索引位置的字符)
        //第三个参数:目标字符数组
        //第四个参数:开始复制的目标字符数组的起始位置
        str1.getChars(1,3,c,1);
        for(int i = 0;i<c.length;i++){
            System.out.print(c[i]);
            System.out.print("|");
        }

    }
}
执行结果:
 | | | |
 |b|c| |


char[] toCharArray() ->字符串转char[]数组
public class Main {
    public static void main(String[] args) {
        String str1 = "aabbcc";
        char[] c = str1.toCharArray();
        for(int i =0;i<c.length;i++){
            System.out.print(c[i]);
            System.out.print("|");
        }
    }
}

11.int indexOf(String str) ->返回目标字符在源字符串中第一次出现处的索引。未出现返回-1
public class Main {
    public static void main(String[] args) {
        String str1 = "bbbcca";
        //从str1的0位置索引开始找第一次出现bcc的位置,返回2
        int i1 = str1.indexOf("bcc");
        //从str1的0位置索引开始找第一次出现cd的位置,没有找到返回-1
        int i2 = str1.indexOf("cd");
        //从str1的1位置索引开始找第一次出现bc的位置,返回2
        int i3 = str1.indexOf("bc",1);
        //从str1的2位置索引开始找第一次出现bb的位置,没有找到返回-1
        int i4 = str1.indexOf("bb",2);


        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}
执行结果:
2
-1
2
-1

int lastIndexOf(String str) ->返回目标字符串在源字符串中最后一次出现处的索引,未出现返回-1。因为要找最后一次出现的索引,所以实现是从末位往前找

public class Main {
    public static void main(String[] args) {
        
        String str1 = "bbbbcaca";
        //从str1末位索引开始往前找字符串ca第一次出现的位置,返回下标6
        int i1 = str1.lastIndexOf("ca");
        //从str1末位索引开始往前找字符串bd第一次出现的位置,没有找到返回-1
        int i2 = str1.lastIndexOf("bd");
        //从str1的第5位索引(包含第5位)开始往前找字符串ca第一次出现的位置,返回下标4
        int i3 = str1.lastIndexOf("ca",5);
        //从str1的第5位索引(包含第5位)开始往前找字符串bd第一次出现的位置,没有找到返回-1
        int i4 = str1.lastIndexOf("bd",5);


        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);
    }
}
执行结果:
6
-1
4
-1

12.String intern() -> 返回一个String对象,该对象将直接指向调用对象的值在常量池的地址
public class Main {
    public static void main(String[] args) {
        //str1指向常量池的一个地址
        String str1 = "bbbcca";
        //str2指向堆内存中的一个地址,
        String str2 = new String("bbbcca");

        System.out.println(str1 == str2);
        
        //根据str2的值指向常量池的一个地址
        String str3 =str2.intern();
        //指向堆内存中的一个地址
        String str4 = str2;

        System.out.println(str1 == str3);
        System.out.println(str1 == str4);
    }
}

执行结果:
false
true
false

13.    boolean matches(String regex) ->判断该字符串是否符合入参的正则表达式
public class Main {
    public static void main(String[] args) {
        //str1指向常量池的一个地址
        String str1 = "bbbbcaca";
        boolean falg1 = str1.matches("[a-z]+");
        boolean falg2 = str1.matches("[A-Z]+");
        System.out.println(falg1);
        System.out.println(falg2);
    }
}
执行结果:
true
false

14.    String replace(char oldChar, char newChar) -> 将源字符串中的oldchar替换成newchar
public class Main {
    public static void main(String[] args) {
        //str1指向常量池的一个地址
        String str1 = "bbbbcaca";
        String str2 = str1.replace('a','d');
        System.out.println(str2);
    }
}
执行结果:
bbbbcdcd

String replaceAll(String regex, String replacement) ->将源字符串中符合regex正则表达式的所有子字符串替换成replacement字符串

public class Main {
    public static void main(String[] args) {
        
        String str1 = "WWW.baidu.COM";
        String str2 = str1.replaceAll("[A-Z]+","123");
        System.out.println(str2);
    }
}
执行结果:
123.baidu.123

String replaceFirst(String regex, String replacement) ->将源字符串中符合regex正则表达式的第一个子字符串替换成replacement字符串

public class Main {
    public static void main(String[] args) {
        //str1指向常量池的一个地址
        String str1 = "WWW.baidu.COM";
        String str2 = str1.replaceFirst("[A-Z]+","123");
        System.out.println(str2);
    }
}
执行结果:
123.baidu.COM

15.    String[] split(String regex) -> 将源字符串按照regex正则表达式进行分割,返回一个String[]
public class Main {
    public static void main(String[] args) {
        String str1 = "www.baidu.com";
        String[] strArr1 = str1.split("\\.");
        //带参数表示生成的数组长度,如果是2,分割完第一份之后就不再分割了,将其余元素复制进数组下一个值
        String[] strArr2 = str1.split("\\.",2);

        for(int i = 0;i<strArr1.length;i++){
            System.out.print(strArr1[i]+" ");
            System.out.print(i+"|");
        }
        System.out.println();
        for(int i = 0;i<strArr2.length;i++){
            System.out.print(strArr2[i]+" ");
            System.out.print(i+"|");
        }
    }
}
执行结果:
www 0|baidu 1|com 2|
www 0|baidu.com 1|

16.    String substring(int beginIndex) ->字符串截取,从beginIndex截到最后

String substring(int beginIndex, int endIndex) ->字符串截取,从beginIndex截到endIndex(含头不含尾)。

public class Main {
    public static void main(String[] args) {
        String str1 = "aabbcc";
        String str2 = str1.substring(2);
        //含头不含尾
        String str3 = str1.substring(2,4);
        System.out.println(str2);
        System.out.println(str3);
    }
}
执行结果:
bbcc
bb

17.String toLowerCase() ->字符串转小写
   String toUpperCase() ->字符串转小写
public class Main {
    public static void main(String[] args) {
        String str1 = "AAbbcc";
        String str2 = str1.toLowerCase();
        String str3 = str1.toUpperCase();
        System.out.println(str2);
        System.out.println(str3);
    }
}
执行结果:
aabbcc
AABBCC

18.    String trim() ->去首尾的空白符
public class Main {
    public static void main(String[] args) {
        String str1 = "  AAbbcc  ";
        String str2 = str1.trim();
        System.out.println(str1);
        System.out.println(str2);
    }
}
执行结果:
  AAbbcc  
AAbbcc

19.    static String valueOf(Object o) ->调用实例的toString方法返回该字符串

    public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
    }
    
    public static String valueOf(char data[], int offset, int count) {
        return new String(data, offset, count);
    }
    
    public static String valueOf(boolean b) {
        return b ? "true" : "false";
    }
    
    public static String valueOf(char c) {
        char data[] = {c};
        return new String(data, true);
    }
    
    public static String valueOf(int i) {
        return Integer.toString(i);
    }
    
    public static String valueOf(long l) {
        return Long.toString(l);
    }
    
    public static String valueOf(float f) {
        return Float.toString(f);
    }
    
    public static String valueOf(double d) {
        return Double.toString(d);
    }

20.public boolean contains(CharSequence chars) ->如果包含指定的字符或字符串返回 true,否则返回 false。

public class Main {
    public static void main(String[] args) {
        String str1 = "  AAbbcc  ";
        boolean flag1 = str1.contains("AA");
        boolean flag2 = str1.contains("aa");

        System.out.println(flag1);
        System.out.println(flag2);


    }
执行结果:
true
false

21.    isEmpty() ->判断一个字符串是否为空
public class Main {
    public static void main(String[] args) {
        String str1 = "  AAbbcc  ";
        boolean flag1 = str1.isEmpty();
        boolean flag2 = "".isEmpty();

        System.out.println(flag1);
        System.out.println(flag2);


    }
}
执行结果:
false
true


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值