
本文共 6143 字,大约阅读时间需要 20 分钟。
- 构造字符串对象
- String类的常用方法
//public int length()//public boolean equals(String s)//public boolean startsWith(String s)//public boolean endsWith(String s)//public boolean regionMatches(int firstStart,String other,int ortherStart,int length)//public boolean regionMatches(boolean b,int firstStart,String other,int ortherStart,int length)//public int compareTo(String s)//public int compareToIgnoreCase(String s)//public boolean contains(String s)//public int indexOf(String s)//public int indexOf(String s,int startpoint)//public int lastIndexOf(String s)//public String subString(int startPoint)//public String trim()
Java使用java.lang包(默认导入)中的String类来创建一个字符串变量,字符串变量是对象
注意:Java把String类声明为Final类,因此用户不能扩展String类,即String类不能有子类
一:构造字符串对象
- 常量对象
字符串常量对象是用双引号括起的字符序列
如:“你好”,“12.86”,“boy”等
- 字符串对象
可以使用String类声明字符串对象
如:String s; (注意:这时候s是null,如果是局部变量,因为没有初始化,所有没有默认值)
由于字符串是对象,那么必须创建字符串对象,可以使用String类的构造方法
如:s=new String(“who are you”);
也可以使用一个创建好的字符串创建另外一个字符串
如:String a=new String(s);
- 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”);
- 引用字符串常量对象
字符串常量是对象,因此,可以把字符串常量的引用赋给一个字符串常量
如:String s1,s2;
S1=“how are you”;
S2=“how are you”;
“how are you”字符串常量是对象,因此s1和s2具有相同的索引,因而具有相同的实体。(也就是说他们的地址是一样的)
但是:
String s1=new String(“how are you”);
String s2=new String(“how are you”);
s1和s2的引用不同
public class AA { public static void main(String []agrs){ String s1,s2;// System.out.println(s1); //非法 s1="aa"; s2="aa"; System.out.println(s1==s2); String s3=new String("how are you"); String s4=new String("how are you"); System.out.println(s3==s4); }}
true
false
二:String类的常用方法
- public int length()
使用String类中的length()方法可以获取一个字符串的长度
如:String a=“我们是学生”;Int n1,n2;n1=a.length(); //对象.方法n2=“你好abcd”.length();那么n1的值为5,n2的值为6
- 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指定的字符串是否相同,比较时候忽略大小写
- 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
- 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开始//为什么k是7,因为比较了7轮,只有一轮en符合,所以number是1 for(k=0;k
使用该方法的重载方法:
- public boolean regionMatches(boolean b,int firstStart,String other,int ortherStart,int length)
可以通过b决定是否忽略大小写,但b为true时候,忽略大小写
- public int compareTo(String s)方法
字符串对象可以使用String类中的compareTo(String s)方法,按字典序与参数s指定的字符串比较大小。
如果当前字符串与s相同,该方法返回值0;如果大于s,返回正值,如果小于返回负值
如:String str=”abcde”;str.compareTo(“boy”)小于0str.compareTo(“aba”)大于0str.compareTo(“abcde”)等于0我是这样想:比如abcde和boy比较,第一个字母:a a,所以大于0还有就是A和a比,小于0,因为Aa
也可以使用该方法,该方法忽略大小写
- public int compareToIgnoreCase(String s)
例子:将一个字符串数组按字典序重新排列
package p1;public class SortString { public static void sort(String a[]){ for(int i=0;i
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
- public boolean contains(String s)
字符串对象调用contains方法,判断当前字符串对象是否含有参数指定的字符串s
如:tom=”student”,那么tom.contains(“stu”)的值是true,而tom.contains(“ok”)的值是false
- public int indexOf(String s)
- indexOf(String s,int startpoint)
- lastIndexOf(String s)
字符串对象调用方法indexOf(String s)从当前字符串的头开始检索字符串s,并返回首次出现s的位置,如果没有检索到,返回-1
也可以调用indexOf(String s,int startpoint)方法,从startpoint位置开始检索(首次出现的s,-1,懒的写了)
字符串调用lastIndexOf(String s)方法(最后出现的s,-1)
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
- 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对应那个字符不包括)
注意:如果String pathpath="c:\\book\\javabook\\xml.doc";\\是转义字符,输出\的意思即如果这样String sub=path.substring(2);System.out.println(sub);输出得到是\book\javabook\xml.doc
- public String trim()
一个字符串s通过调用方法 trim()得到一个字符串对象,该字符串对象是s去掉前后空格的字符串
发表评论
最新留言
关于作者
