续
更高效地刷OJ——String常用方法(一)
更高效地刷OJ——String常用方法(二)
- contains() :这个方法用于查询传入的子串是否存在于字符串中,这个方法返回值是Boolean类型。
通过代码理解:
public static void main(String[] args) {
String str = "Hello World";
//查询"o w"这个子串是否存在于字符串内
System.out.println(str.contains("o W"));
//查询"o w"这个子串是否存在于字符串内
System.out.println(str.contains("o w"));
}
运行结果:
10.startsWith() : 查看字符串是否是以传入的参数为起始,返回值是boolea。这个方法有两个重载:
第一种:从字符串 0 位置开始查看字符串是否是以传入的参数为起始;
第二种:从传入的第二个参数的位置为起始点,查看字符串是否是以传入的参数为起始。
需要注意的是这个方法是区别大小写的。
通过代码理解:
public static void main(String[] args) {
String str = "Hello World";
System.out.println("查看字符串是否以\"hel\"子串为始 :" + str.startsWith("hel"));
//区分大小写
System.out.println("查看字符串是否以\"Hel\"子串为始 :" + str.startsWith("Hel"));
//从 0 位置查是否以"Wor"子串为始
System.out.println("从 0 位置查是否以\"Wor\"子串为始 :" + str.startsWith("Wor"));
//从 6 位置查是否以"Wor"子串为始
System.out.println("从 6 位置查是否以\"Wor\"子串为始 :" + str.startsWith("Wor", 6));
}
运行结果:
- endsWith() :于startsWith() 相对应,endsWith() 是检测字符串是否是以传入的参数为结束,返回值是boolea。
但是于startsWith() 不同的是因为endsWith() 是检测结尾的,所以他只有一种重载形式,不需要传入第二个起始位置参数,如下:
12. equals() :用来比较两个String 对象内的字符串是否相等,区分字符串中字符的大小写;
equalsIgnoreCase() :用来比较两个String 对象内的字符串是否相等,不区分字符串中字符的大小写;
注意: 于 " == " 用于比较两个(任何类型)引用 是否指向同一个对象, equals() / equalsIgnoreCase() 是比较 两个引用指向的对象内的内容是否相同。
通过代码理解:
public static void main(String[] args) {
String str1 = "Hello World";
String str2 = "Hello World";
String str3 = "hello world";
System.out.println(str1.equals(str2));
//equals() 区分大小写的比较
System.out.println(str1.equals(str3));
//equalsIgnoreCase() 不区分大小写的比较
System.out.println(str1.equalsIgnoreCase(str3));
}
运行结果:
13.compareTo() : 比较两个字符串,返回一个int类型的数
铺垫(字母怎么比较):按照字母在Unicode码表中先后顺序比较,如 B > A; C > B; a > A,这里需要注意的是 在 Unicode码表中,大写字母段 在前,小写字母段 在后,所以任何一个小写字母都要大于大写字母 (Z < a)。
比较规则:先从两个字符串的首字母开始比较,若相等则比较下一位,直到能比较出大小的时候,此时:
(1).若前者字符串首字母大于后者 返回 一个 大于0 的int类型数值,若前者字符串首字母 小于 后者字符串首字母 返回 一个小于0的int类型数值。
(2).对于两个长度相等的字符串,字母依次比较直至结束都相等的话 则说明这两个字符串相等,返回 0。
(3).对于两个长度不相等的字符串如 “day” 和 “days”,前段字母都相等,就是另一个字符串更长一些,则长的字符串大
compareToIgnoreCase() :这个方法和 compareTo() 的区别为 compareToIgnoreCase() 忽视了两个字符串中大小写的区别。
通过代码理解:
public static void main(String[] args) {
String str1 = "Hello World";
String str2 = "Thanks";
String str3 = "hello WORLD";
String str5 = "HEllo World";
String str6 = "Hello Worlds";
//因为 "H" 在Unicode编码表中在 "h" 之前,所以"Hello World" 小于 "hello World" 所以返回负数
System.out.println( "\"Hello World\" 和 \"hello WORLD\"比较结果 :" + str1.compareTo(str3));
//因为首字母'H'相等,比较第二个字母,'e' > 'E' 所以返回大于0 的数
System.out.println("\"Hello World\" 和 \"HEllo World\"比较结果 :" + str1.compareTo(str5));
//当字母都比较完了,则字符串长度较长的那个大, 因为 "Hello World" 比 "Hello Worlds"短,所以返回负数
System.out.println("\"Hello World\" 和 \"Hello Worlds\"比较结果 :" + str1.compareTo(str6));
//虽然"Thanks"更短,但是因为先比较字母大小'T'比'H'大所以 "Thanks"更大,返回负数
System.out.println("\"Hello World\" 和 \"Thanks\"比较结果 :" + str1.compareTo(str2));
//compareToIgnoreCase()忽视两个字符串中的大小写区别
System.out.println("\"Hello World\" 和 \"hello WORLD\" 用 compareToIgnoreCase() 的比较结果 :"
+ str1.compareToIgnoreCase(str3));
}
运行结果:
14.format() :这是一个静态方法, 这个方法用于返回一个按一定格式表达的字符串,格式的形式和printf 中所用的格式相同
通过代码理解:
public static void main(String[] args) {
String s = String.format("大家好,我叫 %s, 今年 %d 岁。","有裂痕的石头",21);
System.out.println(s);
}
运行结果:
15.trim() : 裁减掉字符串两边的(字符串内部的不裁剪) 空字符串,\n , \t等
通过代码理解:
public static void main(String[] args) {
String s = "\t\tHello World \n";
//"|"用于显示\t \n的存在
System.out.println('|' + s + '|');
String s1 = s.trim();
//用了trim()方法后对字符串两边\t \n做了删减
System.out.println('|' + s1 + '|');
}
运行结果:
16.valueOf() :这个方法也是一个静态方法,用于把其它类型变量转为String类型,它有以下几种重载:
以下几个方法稍作了解就行:
假设有两个Sting类型 s和t
1.concat() : s.concat( t ); 等价于 s + t;
2.isEmpty() :s.isEmpty() == true 等价于 s.length()==0;
以上就是String类型常用方法,有时候在刷OJ题时直接使用这些方法,能以更快的速度实现题目要求
如果总结的有错误,希望各位看官能在评论区提出,谢谢。
共有条评论 网友评论