Java API:String类

来源:互联网 发布:thunder mac 2.7.8 编辑:程序博客网 时间:2024/04/29 17:13

字符串就是指一连串的字符。字符串中可以包含任意字符,这些字符必须包含在一对双引号之内。String类位于java.lang包中,因此不需要导包就可以直接使用。可包含零到多个字符。空格也算一个字符。用加号来连接字符串和变量。

字符串字面值“abc”也可以看成是一个字符串对象。

字符串是常量,它们的值在创建之后不能更改。

打印一个对象的引用的时候会默认调用它的toString方法,打印其完整的类名和哈希值。但我打印字符串的时候不是这样,因为String类重写了toString方法,打印的时候会调用其自身的toString方法。

String类的初始化

在操作String类之前,首先需要对String类进行初始化。

  1. 使用字符串常量直接初始化一个String对象

    String str1="abc";

    由于String类比较常用,所以提供了这种简化的语法,用于创建并初始化String对象

    字符串字面值“abc”也可以看成是一个字符串对象。

    字符串是常量,它们的值在创建之后不能更改。

    String str="abc";//当把"def"赋值给str,原来的"abc"就变成了垃圾。并没有在原对象上更改而是新建了一个对象。把这个新对象赋给了引用str="def";        System.out.println(str); //String重写了toString方法,打印的时候会自动调用自己的toString方法返回对象本身

  2. 使用String的构造方法初始化字符串对象

    • String():创建一个内容为空的字符串
    • String(byte[] bytes):通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String
    • String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
    • String(char[] value):根据指定的字符数组创建对象
    • String(char[],int index,int count):把字符数组的一部分转成字符串
    • String(String value):根据指定的字符串内容创建对象

    如何查看本平台默认字符集?项目–右键–属性–Resource–Text file encoding

    String str1=new String();String str2=new String("abcd");char[] charArray={'a','b','c'};String str3=new String(charArray);byte[] byteArray={97,98,99,100,101,102};String str4=new String(byteArray);String str5=new String(byteArray,1,3);String str6=new String(charArray,1,2);System.out.println("a"+str1+"b");System.out.println(str2);System.out.println(str3);System.out.println(str4);System.out.println(str5);System.out.println(str6);

    运行结果为

    ababcdabcabcdefbcdbc

String类的常见操作

  1. 字符串的基本操作

    • int length():返回此字符串的长度
    • char charAt(int index):返回字符串中index位置上的字符,其中index的取值范围是:0~(字符串的长度-1)
    • int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引
    • int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引
    • int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引
    • int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引
    • int lastIndexOf(int ch):返回指定字符在此字符串中最后一次出现处的索引

      String s="abcdedcba";System.out.println("字符串的长度为:"+s.length());System.out.println("字符串的第一个字符为:"+s.charAt(0));System.out.println("字符c第一次出现的位置为:"+s.indexOf('c'));System.out.println("字符c最后一次出现的位置为:"+s.lastIndexOf('c'));System.out.println("字符串cd第一次出现的位置为:"+s.indexOf("cd"));System.out.println("字符串a从第3个位置后第一次出现的位置为:"+s.indexOf('a',3));

      运行结果为

      字符串的长度为:9字符串的第一个字符为:a字符c第一次出现的位置为:2字符c最后一次出现的位置为:6字符串cd第一次出现的位置为:2字符串a从第3个位置后第一次出现的位置为:8

      字符串的遍历

      String s="abcd";for(int i=0;i<s.length();i++){System.out.println(s.charAt(i));}

      运行结果为

      abcd

      统计不同类型的字符个数

      String s = "ABCDEabcd123456!*&$%";int big = 0;int small = 0;int num = 0;int other = 0;for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c >= 'A' && c <= 'Z') {    big++;} else if (c >= 'a' && c <= 'z') {    small++;} else if (c >= '0' && c <= '9') {    num++;} else {    other++;}}System.out.println(s+"中有大写字母"+big+"个,小写字母"+small+"个,数字"+num+"个,其他字符"+other+"个");}

  2. 字符串的转换操作

    • char[] toCharArray():将此字符串转换为一个字符数组
    • byte[] getBytes():把字符串转换为字节数组
    • (了解)String toLowerCase(): 使用默认语言环境的规则将String中的所有字符都转换为小写
    • (了解)String toUpperCase():使用默认语言环境的规则将String中的所有字符都转换为大写
    • (了解)String concat(String str);:将指定字符串连接到此字符串的结尾。
    • static String valueOf(char[] chs):把字符数组转换成字符串
    • static String valueOf(int i):返回int参数的字符串表示形式。valueOf有很多重载,他可以把任意类型的数据转换成字符串。

      String str="abcd";System.out.print("将字符串转为字符数组后的结果:");char[] charArray=str.toCharArray();for (int i = 0; i < charArray.length; i++) {if (i!=charArray.length-1) {    //如果不是数组的最后一个元素,在元素后面加逗号    System.out.print(charArray[i]+",");}else {    //数组的最后一个元素后面不加逗号    System.out.println(charArray[i]);}}byte[] byteArray=str.getBytes();for (int i = 0; i < byteArray.length; i++) {System.out.print(byteArray[i] + " ");}System.out.println("将int值转换为String类型之后的结果"+String.valueOf(12));System.out.println("将字符串转换成大写之后的结果:"+str.toUpperCase());

      运行结果为

      将字符串转为字符数组后的结果:a,b,c,d97 98 99 100int值转换为String类型之后的结果12将字符串转换成大写之后的结果:ABCD

      按要求转换字符(链式编程)

      链式编程:只要保证每次调用完方法返回的是对象,就可以继续调用

      把第一个字符串的首字母转成大写,其余转换成小写

      String s="aEFFDjdfdFE";String s2=s.substring(0,1).toUpperCase().concat(s.substring(1).toLowerCase());System.out.println(s2);

      运行结果为

      Aeffdjdfdfe

  3. 字符串的替换和去除空格操作

    • String replace(CharSequence oldstr,CharSequence newstr):返回一个新的字符串,它是通过用newstr替换此字符串中出现的所有oldstr得到的。
    • String trim():返回一个新字符串,它去除了原字符串首位的空格。

      String s="abcd";System.out.println("将b替换成e的结果:"+s.replace("b","e"));String s1=" a b c d ";System.out.println("去除字符串两端空格后的结果:"+s1.trim());System.out.println("去除字符串中所有空格后的效果:"+s1.replace(" ",""));

      运行结果为

      将b替换成e的结果:aecd去除字符串两端空格后的结果:a b c d去除字符串中所有空格后的效果:abcd
  4. 字符串的判断操作

    • boolean endsWith(String suffix):判断此字符串是否以指定的字符串结尾
    • boolean startsWith(String prefix):判断此字符串是否以指定的字符串开始
    • boolean contains(CharSqeuence cs):判断此字符串中是否包含指定的字符序列
    • boolean isEmpty():当且仅当字符串长度为0时返回true
    • boolean equals(Object anObject):将此字符串与指定的字符串比较是否相同,区分大小写。
    • boolean equalsIgnoreCase(String str):

      String s1="abcd";String s2="ef";String s3="Ef";System.out.println("判断是否以字符串ab开头:"+s1.startsWith("ab"));System.out.println("判断是否以字符串d结尾:"+s1.endsWith("d"));System.out.println("判断是否包含字符串adc:"+s1.contains("abc"));System.out.println("判断字符串是否为空:"+s1.isEmpty());System.out.println("判断两个字符串是否相等:"+s1.equals(s2));System.out.println("判断两个字符串是否相等:"+s2.equalsIgnoreCase(s3));

      运行结果为

      判断是否以字符串ab开头:true判断是否以字符串d结尾:true判断是否包含字符串adc:true判断字符串是否为空:false判断两个字符串是否相等:false判断两个字符串是否相等:false
  5. 字符串的截取和分割

    • String[] split(String regex):根据参数regex将原来的字符串分割为若干个子字符串
    • String substring(int beginIndex):返回一个新的字符串,它包含字符串中索引beginIndex后的所有字符
    • String substing(int beginIndex,int endIndex):返回一个新的字符串,它包含此字符串中从索引beginIndex到索引endIndex之间的所有字符。

      String str="羽毛球-篮球-乒乓球";System.out.println("从第5个字符截取到末尾的结果:"+str.substring(4));System.out.println("从第5个字符截取到第6个字符的结果:"+str.substring(4,6));System.out.print("分割后的字符串数组中的元素依次为:");String[] strArray=str.split("-");for(int i=0;i<strArray.length;i++){if (i!=strArray.length-1) {    //如果不是数组的最后一个元素,在元素后面加逗号    System.out.print(strArray[i]+",");}else {    //数组的最后一个元素后面不加逗号    System.out.println(strArray[i]);}}

      运行结果为

      从第5个字符截取到末尾的结果:篮球-乒乓球从第5个字符截取到第6个字符的结果:篮球分割后的字符串数组中的元素依次为:羽毛球,篮球,乒乓球
0 0