为什么不能这样写 if ((s.charAt(i)).equals(‘a’))
没有重写equals方法时,equals不是等价于==么?为什么不可以
char 是基本数据类型 没有equals方法
那就是 int double char都是直接用 == ,然后String这样子的就要用 equals
==可以用来比较①基本数据类型(int char…) ②引用对象(例如题中的"s")
equals()是String对象的方法,经常用来比较对象的内容是否相等。
==:判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象,也可以equals()方法是比较两个字符串对象中的内容是否一致,而此处s.charAt(i)返回类型为char型(字符型),而’a’为字符常量,所以用较好
toCharArray(): public char[] toCharArray()// 将字符串转换为一个字符数组
字符串查找
String提供了两种查找字符串的方法,即indexOf与lastIndexOf方法。
1、indexOf(String s)
该方法用于返回参数字符串s在指定字符串中首次出现的索引位置,当调用字符串的indexOf()方法时,会从当前字符串的开始位置搜索s的位置;如果没有检索到字符串s,该方法返回-1
String str ="We are students";
int size = str.indexOf("a"); // 变量size的值是3
2、lastIndexOf(String str)
该方法用于返回字符串最后一次出现的索引位置。当调用字符串的lastIndexOf()方法时,会从当前字符串的开始位置检索参数字符串str,并将最后一次出现str的索引位置返回。如果没有检索到字符串str,该方法返回-1.
如果lastIndexOf方法中的参数是空字符串"" ,,则返回的结果与length方法的返回结果相同。
获取指定索引位置的字符
使用charAt()方法可将指定索引处的字符返回。
String str = "hello word";
char mychar = str.charAt(5); // mychar的结果是w
获取子字符串
通过String类的substring()方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串下标是从0开始的。在字符串中空格占用一个索引位置。
1、substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
1 String str = “Hello word”;
2 String substr = str.substring(3); //获取字符串,此时substr值为lo word
2、substring(int beginIndex, int endIndex)
beginIndex : 开始截取子字符串的索引位置
endIndex:子字符串在整个字符串中的结束位置
substring(x)是从字符串的的第x个字符截取
substring(x,y)是从x到y前的位置停止
String str = "Hello word";
String substr = str.substring(0,3); //substr的值为hel
去除空格
trim()方法返回字符串的副本,忽略前导空格和尾部空格。
split("\s+") 和 split(" +") 有什么区别?
首先要明白split方法的参数含义:
split
public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。
然后就要明确正则表达式的含义了:
\s表示 空格,回车,换行等空白符,
+号表示一个或多个的意思
字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串
oldChar:要替换的字符或字符串
newChar:用于替换原来字符串的内容
如果要替换的字符oldChar在字符串中重复出现多次,replace()方法会将所有oldChar全部替换成newChar。需要注意的是,要替换的字符oldChar的大小写要与原字符串中字符的大小写保持一致。
String str= "address";
String newstr = str.replace("a", "A");// newstr的值为Address
判断字符串的开始与结尾
startsWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
1、startsWith(String prefix)
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
2、endsWith(String suffix)
该方法用于判断当前字符串是否以给定的子字符串结束
判断字符串是否相等
1、equals(String otherstr)
如果两个字符串具有相同的字符和长度,则使用equals()方法比较时,返回true。同时equals()方法比较时区分大小写。
2、equalsIgnoreCase(String otherstr)
equalsIgnoreCase()方法与equals()类型,不过在比较时忽略了大小写。
按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串,该比较基于字符串中各个字符的Unicode值,按字典顺序将此String对象表示的字符序列与参数字符串所表示的字符序列进行比较。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0.
str.compareTo(String otherstr);
字母大小写转换
字符串的toLowerCase()方法可将字符串中的所有字符从大写字母改写为小写字母,而tuUpperCase()方法可将字符串中的小写字母改写为大写字母。
str.toLowerCase();
str.toUpperCase();
字符串分割
使用split()方法可以使字符串按指定的分隔字符或字符串对内容进行分割,并将分割后的结果存放在字符数组中。
str.split(String sign);
sign为分割字符串的分割符,也可以使用正则表达式。
没有统一的对字符串进行分割的符号,如果想定义多个分割符,可使用符号“|”。例如,“,|=”表示分割符分别为“,”和“=”。
str.split(String sign, in limit);
limit为可选项。该值用来限制返回数组中的元素个数。
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。
char a = ‘0’; //将字符常量’0’赋值给char型变量a
char a = 0; //将整型常量0赋值给char型变量,这里0作为ASCII码转化为对应的字符再赋值给a(我不知道0对应哪个字符,但是肯定不是’0’)
判断字符串中是否有子字符串
1 String类型有一个方法:contains() ,如果有则返回true,如果没有则返回false。
如:if(map_string.contains(“name”)){
System.out.println(“找到了name的key”);
}
if(map_string.contains(“password”)){
System.out.println(“找到了password的key”);
}
2 将map类型直接转化为String类型。
如:String map_string="";
Iterator iterator=map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry entry=(Map.Entry)iterator.next();
String key=entry.getKey().toString();
String value=entry.getValue().toString();
map_string=map_string+key+":"+value+",";
}
这样就可以将map类型转化为String类型。
返回一个值,该值指示指定的 String 对象是否出现在此字符串中。
String source = "abcd";
if(source.contains("a")){
System.out.println(是);
}else{
System.out.println(否);
}
正则表达式详见这里.
toCharArray()的用法:将字符串对象中的字符转换为一个字符数组
例如:
String myString="abcd";
char myChar[]=myString.toCharArray();
System.out.println("myChar[1]="+myChar[1]); //[n] n是几就是第几个字母,不写就是输出所有。
输出结果:
myChar[0]=a;
myChar[1]=b;
myChar[2]=c;
myChar[3]=d;