9.1 String类

9参考书籍:Java面向对象程序设计(第二版)--耿祥义 张跃平编著

目录:一:构造字符串对象

二:String类的常用方法

 

Java使用java.lang包(默认导入)中的String类来创建一个字符串变量,字符串变量是对象

注意:Java把String类声明为Final类,因此用户不能扩展String类,

即String类不能有子类

 

一:构造字符串对象

(1)常量对象

字符串常量对象是用双引号括起的字符序列

如:“你好”,“12.86”,“boy”等

(2)字符串对象

可以使用String类声明字符串对象

如:String s;   (注意:这时候s是null,如果是局部变量,因为没有初始化,所有没有默认值)

由于字符串是对象,那么必须创建字符串对象,可以使用String类的构造方法

如:s=new String(“who are you”);

也可以使用一个创建好的字符串创建另外一个字符串

如:String a=new String(s);

(3)String类还有两种较常用的构造方法

1>String (char a[]):用一个字符数组a创建一个字符串对象

如char a[]={b,o,y};

String s=new String(a);

相当于

String s=new String(“boy”);

2>String(char a[],int startIndex,int count):提取字符数组a中的一部分字符创建一个字符串对象,参数startIndex和count分别指定在a中提取字符的起始位置和从该位置开始截取的字符个数。(注意:数组的索引是从0开始的)

如:char a[]={b,o,y,f};

String s=new String(a,1,2);

相当于

String s=new String(“oy”);

(4)引用字符串常量对象

字符串常量是对象,因此,可以把字符串常量的引用赋给一个字符串常量

如:String s1,s2;

S1=“how are you”;

S2=“how are you”;

因此s1和s2具有相同的索引,因而具有相同的实体。(也就是说他们的地址是一样的)

 

 

二:String类的常用方法

(1)public int length()

使用String类中的length()方法可以获取一个字符串的长度

如:String a=“我们是学生”;

Int n1,n2;

n1=a.length();     //对象.方法

n2=“你好abcd”.length();

那么n1的值为5,n2的值为6

 

 

(2)public boolean equals(String s)

字符串对象调用equals(String s)方法比较当前字符串对象的实体是否与参数s指定的字符串的实体相同

如:String a=new String(wo);

String b=new String(we);

String c=new String(wo);

那么,a.equals(b)的值为false  ,  a.equals(c)的值为true

注意

1>关系式a==c的值是false,因为字符串是对象,a和c中存放的是引用,虽然值一样,但a和c的引用不一样(和前面(4)不一样,这里是new了新的)

2>字符串对象调用public boolean equalsIgnoreCase(String s)比较当前字符串对象与参数s指定的字符串是否相同,比较时候忽略大小写

 

(3)public boolean startsWith(String s)

public boolean endsWith(String s)方法

字符串对象调用startsWith(String s)方法,判断当前字符串对象的前缀是否是参数s指定的字符串

如:String a=“2603021”,b=“21079220”;

那么,a.startsWith(“260”)的值是true,b.startsWith(“260”)的值是false

 

使用endsWith(String s)方法,判断一个字符串的后缀是否是字符串s

如:a.endsWith(“021”)的值是true,b.endsWith(“021”)的值是false

 

(4)public boolean regionMatches(int firstStart,String other,int ortherStart,int length)方法

字符串调用regionMatches(int firstStart,String other,int ortherStart,int length)方法,从当前字符串参数firstStart指定的位置开始处,取长度为length的一个字串,并将这个字串和参数other指定的一个字串进行比较,其中,other指定的字串是从参数ortherStart指定的位置开始,去长度为length的一个子串。(看例子比较好懂)

如果两个子串相同,该方法返回true,否则返回false

例子:

package p3;

public class P3 {
    public static void main(String args[]){
        int number=0;
        int k;
        String s="student";
        System.out.println(s.length());   //长度从1开始
        for(k=0;k
            if (s.regionMatches(k,"en",0,2)){    //索引从0开始
                number++;            //一个en
            }              //k是从字符串s即student第几位开始,索引从k开始,长度为2
        }                  //"en"是要对比的字符串,从索引0开始(ooffset那个),长度也是2
        System.out.println(number);
        System.out.println(k);
    }

}

结果是7 1 7

 

使用该方法的重载方法:

public boolean regionMatches(boolean b,int firstStart,String other,int ortherStart,int length)

可以通过b决定是否忽略大小写,但b为true时候,忽略大小写

 

(5)public int compareTo(String s)方法

字符串对象可以使用String类中的compareTo(String s)方法,按字典序与参数s指定的字符串比较大小。

如果当前字符串与s相同,该方法返回值0;如果大于s,返回正值,如果小于返回负值

如:String str=abcde;

str.compareTo(boy)小于0

str.compareTo(aba)大于0

str.compareTo(abcde)等于0

 

也可以使用public int compareToIgnoreCase(String s)方法

该方法忽略大小写

 

例子:将一个字符串数组按字典序重新排列

SortString类

package p1;

public class SortString {
    public static void sort(String a[]){
        for(int i=0;ilength-1;i++){              //0到<4,比较4轮
            for (int j=i+1;jlength;j++){            //1到<5,,比较4次
                if (a[j].compareTo(a[i])<</span>0){         //a[1]和a[0],若<0说明a[1]大,要放后面
                    String temp=a[i];
                    a[i]=a[j];        //交换,下面就是a[2]和a[1]比较,a[3]和a[1],a[4]和a[1]
                    a[j]=temp;         //反正就是使最小那个在第一位,一轮后确定了最小那个数
                }             //第二轮就可以排除第一个,从第二个开始新的一轮确定倒数第二最小的数
            }
        }
    }
}

 

主类

package p1;

import java.util.Arrays;

public class p1 {
    public static void main(String args[]) {
        String a[]={"boy","apple","Applet","girl","Hat"};
        String []b=Arrays.copyOf(a,a.length);
        System.out.println("数组a"+Arrays.toString(a));
        System.out.println("数组b"+Arrays.toString(b));
        System.out.println("使用用户编写的SortString类,按字典序排列数组a");
        SortString.sort(a);
        for (String s:a){
            System.out.print(" "+s);         //用for循环将数组a一个个输出来
        }
        System.out.println();     //换行
        System.out.println("使用类库中的Arrays类,按字典序排列数组b");
        Arrays.sort(b);
        for (String s:b){
            System.out.print(" "+s);         //用for循环将数组a一个个输出来
        }
    }
}

 

结果:

数组a[boy, apple, Applet, girl, Hat]

数组b[boy, apple, Applet, girl, Hat]

使用用户编写的SortString类,按字典序排列数组a

 Applet Hat apple boy girl

使用类库中的Arrays类,按字典序排列数组b

 Applet Hat apple boy girl

 

 

(6)public boolean contains(String s)方法

字符串对象调用contains方法,判断当前字符串对象是否含有参数指定的字符串s

如:

tom=student,那么tom.contains(stu)的值是true,

而tom.contains(ok)的值是false

 

(7) public int indexOf(String s)方法

字符串对象调用方法indexOf(String s)从当前字符串的头开始检索字符串s,并返回首次出现s的位置,如果没有检索到,返回-1

也可以调用indexOf(String s,int startpoint)方法,从startpoint位置开始检索(首次出现的s,-1,懒的写了)

字符串调用lastIndexOf(String s)方法(最后出现的s,-1)

例子:

package p1;

public class p1 {
    public static void main(String args[]) {
        String tom="I am a good cat";
        System.out.println(tom.indexOf("a"));
        System.out.println(tom.indexOf("good"));
        System.out.println(tom.indexOf("a",3));
        System.out.println(tom.indexOf("a",7));
        System.out.println(tom.indexOf("w",2));
        System.out.println(tom.lastIndexOf("a"));
    }    //全以索引形式记就行了,空格也算的
}

结果:2   7   5   13   -1   13

(7)public String subString(int startPoint)方法

字符串对象调用方法获得一个当前字符串的子串,该子串是从当前字符串的startPoint处截取到最后所得到的字符串

也可以调用方法subString(int start,int end)

该子串是从当前字符串的start处截取到end处(不包括end对应的字符)

例子:

String tom=I love tom;

String s=tom.subString(2,5);

那么,s是“lov”.(也是按索引形式去记就行了,注意end对应那个字符不包括)

 

 

(8)public String trim()方法

一个字符串s通过调用方法 trim()得到一个字符串对象,该字符串对象是s去掉前后空格的字符串

 

 

注意:\\算一个字符,输出时候只有\

猜你喜欢

转载自blog.csdn.net/weixin_42717928/article/details/81235835
9.1