目录
2.public boolean equals(String s)
3.public boolean startsWith(String s)、public boolean endsWith(String s)
4.public int compareTo(String s)
5.public boolean contains(String s)
6.public int indexOf(String s)和public int lastIndexOf(String s)(lastIndexOf的Index是大写的i不是L,第一个是小写的L)
前言
今天看到了第八章的String类,只学了五小节多一点,又是摸鱼的一天
一.构造String对象
1.String对象分为常量和非常量。
String常量对象:String s1 = "你好";
String非常量对象:String s2 = new String("你好");
简单来说“=”后直接接“你好”、“abc”、“123”等是常量对象;“=”后接new的就是非常量。
常量和非常量的区别在于引用。
对于常量对象,两个不同对象如果有相同实体,则他们的引用也相同。
如String s1 = "你好”;String s2 = “你好”;那么s1 == s2的值为true,也就是说s1和s2的引用相同。
对于非常量对象,两个不同对象即使实体相同,他们的引用也不相同。
如String s1,s2;
s1 = new String("ab");
s2 = new String("ab");
s1 == s2的值为flase,也就是说每创建一个非常量对象就会分配一个新地址。
2.其他构造方法:
char a[] = {'a','b','c'};
String s = new String(a);
相当于String s = new String("abc");
或
char a[] = {'零’,‘一’,‘二’,‘叁’};
String s = new String(a,1,3);//数组a从a[1]开始的三个字符
相当于String s = new String("一二叁");
二.字符串的并置
String对象可以用“+”进行并置运算。
如String you = "你”;
String hi = “好”;
String test1 = you+hi;
String test2 = “你”+“好”;
需要注意的是test1==test2的值为flase,只要参与并置运算的有一个是变量那么这个新对象就是非常量,也就是说you+hi相当于new String(“你好”)。
三.String类的常用方法
1.public int length()
和之前学的求数组长度一样,获取String对象的字符序列长度。例如:
String s = "1945年抗战胜利";
int n1 = s.length();
int n2 = "小鸟fly".length();
n1的值为9,n2的值为5.
2.public boolean equals(String s)
String对象调用equals(String s)方法比较当前String对象的字符序列是否与参数s指定的String对象相同。例如:
String tom = new String("天道酬勤”);
String boy = new String("知心朋友”);
String jetty = new String("天道酬勤”);
那么,tom.equals(boy)的值为flase,tom.equals(jetty)的值为true。
注意比较的是对象里的实体而不是引用。
书上还说比较时忽略大小写,可是我自己编译运行是区分大小写的,不知道是不是时代变了。
3.public boolean startsWith(String s)、public boolean endsWith(String s)
String对象调用startsWith(String s)方法,判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列,例如:
String tom = "天气预报,小雨”,jerry = “比赛结果,中国胜利”;
那么,tom.startsWith("天气")的值为true,jerry.startsWith("天气”)的值为flase。
String对象调用endsWith(String s)方法,判断当前String对象的字符序列后缀是否是参数指定的String对象s的字符序列,例如:
tom.endsWith("大雨")的值为flase,jerry.endsWith(“胜利”)的值为true。
区分大小写
4.public int compareTo(String s)
String对象调用compareTo(String s)方法,按字典序也就是abcd...顺序(ascll码)与参数指定的String对象s的字符序列比较大小,相同返回0;大于s返回正值;小于s返回负值。例如:
String str = "abcde";
str.compareTo("boy")中a的位置为97,b的位置为98,即返回值<0;
str.compareTo("aba")返回值>0;
str.compareTo("abcde")返回0。
5.public boolean contains(String s)
String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列,例如:
String tom = "student",那么tom.contains("stu")为true,tom.contains("lol")为flase。
6.public int indexOf(String s)和public int lastIndexOf(String s)(lastIndexOf的Index是大写的i不是L,第一个是小写的L)
String对象的字符序列索引位置从0开始,例如,对于String tom = “abcd”,索引位置0,1,2,3分别对应a,b,c,d。
indexOf(String s)从当前String对象的字符序列的0索引位置开始检索首次出现s的字符序列的位置,并返回该位置。如果没有检索到则返回-1.
lastIndexOf(String s)从当前String对象的字符序列的0索引位置开始检索最后一次出现s的字符序列的位置,并返回该位置。如果没有检索到则返回-1.
indexOf(String str,int startpoint)方法是一个重载方法,参数startpoint的值用来指定检索的开始位置。
例如:
String tom ="I am a good cat";
tom.indexOf("a");//值为2
tom.indexOf("good",2);//值为7
tom.indexOf("a",7);//值为13
tom.indexOf("w",2);//值为-1
tom.lastIndexOf("a");//值为13
String对象的字符序列中的转义字符是一个字符,如“\n”为一个字符。
特别注意,String对象的字符序列中如果使用目录符,那么Windows目录符必须转义写成\\,Unix目录符/直接使用即可。
7.public String substring(int startpoint)
调用substring(int startpoint)方法,复制当前String对象的字符序列中的startpoint位置开始到最后位置上的字符得到新String对象的字符序列。
调用substring(int startpoint,int end)方法,复制当前String对象的字符序列中的startpoint位置开始到end-1位置上的字符得到新String对象的字符序列。例如:
String tom = "我喜欢篮球”;
String str = tom.substring(1,3);//str = "喜欢” 而不是 “喜欢篮”!
String str = tom.substring(0);//str = "我喜欢篮球”
8.public String trim()
调用trim()得到新String对象,这个新的String对象的字符序列是将原本String对象字符序列中去掉开头和结尾的空格后的字符序列。例如:
String str = " 你 好 ”;
String tom = str.trim();//tom = "你 好" 只删除前面和后面的空格。
总结
String对象的字符序列中的转义字符是一个字符,如“\n”为一个字符。
特别注意,String对象的字符序列中如果使用目录符,那么Windows目录符必须转义写成\\,Unix目录符/直接使用即可。
复盘也太累了叭