黑马程序员技术交流社区
标题: String类的一些常用方法分析 [打印本页]
作者: Garron 时间: 2016-10-30 13:31
标题: String类的一些常用方法分析
String类的一些常用方法
字符串是最常用的对象,所以,我们有必要彻底的了解下它,下面我会列举常用的字符串里的方法,因为有很多,就不一一列举。
(1)public int length()
返回此字符串的长度。长度等于字符串中 Unicode 代码单元的数量。
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* int length() 返回此字符串的长度。
*/
String s = "abcde";
System.out.println(s.length());
}
控制台输出:6
这个方法很简单:就是给你返回这个字符串的长度
(2)public boolean equals(Object anObject)
将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* public boolean equals(Object anObject)
* 将此字符串与指定的对象比较。当且仅当该参数不为 null,
* 并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
* 注:区分大小写
*/
//1.示例
String s1 = "abc";
String s2 = "abc";
System.out.println(s1.equals(s2));//true
String s3 = "abc";
String s4 = "abd";
System.out.println(s3.equals(s4));//false
//equals 与 ==的区别
String s5 = "abc";
String s6 = "abc";
System.out.println(s5==s6);//true
String s7 = "abc";
String s8 = new String("abc");
String s9 = new String("ABC");
/*
* 区别: ==:比较的是两个字条串的引用地址是否一致(明显s7和s8的引用地址不同)
* equals:较的两个字符串是否一样(明显s7和s8的字符串是一样的)
* 注意:equals是区分大小写(参考s7.equals(s9)
* 实际上基本所有情况都是用equals
*/
System.out.println(s7==s8);//false
System.out.println(s7.equals(s8));//true
System.out.println(s7.equals(s9));//false
}
(3)public boolean equalsIgnoreCase(String str)::比较字符串的内容是否相同,忽略大小写
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
* 举个常用的应用场景:校验你输入的验证码和你输入的是否一致
*/
String s1 = "abc";
String s2 = "ABC";
System.out.println(s1.equalsIgnoreCase(s2));//true
}
(4)boolean contains(String str):判断大字符串中是否包含小字符串(有点像数学里面的包含)
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* boolean contains(String str):判断大字符串中是否包含小字符串(有点像数学里面的包含)
*/
String s1 = "StringDemo";
/*
* 判断StringDemo 是 否包含
* Demo:包含 所以返回的是true
* demo:不包含 所以返回的是false
*
*/
System.out.println(s1.contains("demo"));//false
System.out.println(s1.contains("Demo"));//true
/*
* 如果想忽略大小写是否包含,可以这样写
* toLowerCase():将此 String 中的所有字符都转换为小写
* toUpperCase():将此 String 中的所有字符都转换为大写
* 后面再详讲
*/
System.out.println(s1.toLowerCase().contains("demo".toLowerCase()));//true
System.out.println(s1.toUpperCase().contains("demo".toUpperCase()));//true
}
(5)boolean startsWith(String str):判断字符串是否以某个指定
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
* boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
*/
String s1 = "If you never abandon,I will in life and death";
//startsWith(String str)
System.out.println(s1.startsWith("If"));//true
System.out.println(s1.startsWith("If you"));//true
System.out.println(s1.startsWith("you"));//false
//endsWithString str)
System.out.println(s1.endsWith("th"));//true
System.out.println(s1.endsWith("death"));//true
System.out.println(s1.endsWith("deat"));//false
}
(6)boolean isEmpty():判断字符串是否为空
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* boolean isEmpty():判断字符串是否为空
*/
String s1 = "";
String s2 = " ";
String s3 = null;
System.out.println(s1.isEmpty());//true
System.out.println(s2.isEmpty());//false 不去除空格,可用trim()方法去除左右空格
/*
* 注:这个会抛空指针异常java.lang.NullPointerException
* 因为s3对象都不存在,所以不能调用方法
* 通常不知道字符串是否为null时,以想判断这个字符串是否为空,
* 写法是这样的:if(s3==null||s3.trim().isEmpty())
*/
System.out.println(s3.isEmpty());
}
(7)char charAt(int index):获取指定索引位置的字符
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* char charAt(int index):获取指定索引位置的字符
*/
String s1 = "If you never abandon,I will in life and death";
/*
* 这个方法索引是从0开始找
* If you never abandon,I will in life and death
* 0123456789 ... .... 44
* 它的一个位置大概就是这样
*/
System.out.println(s1.charAt(0));//输出 :I
System.out.println(s1.charAt(2));//输出 :空格
System.out.println(s1.charAt(3));//输出 :y
}
}
(7)int indexOf(int ch):
返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch,int fromIndex):
返回指定字符在此字符串中从指定位置后第一次出现处的索引。
int indexOf(String str,int fromIndex):
返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
int lastIndexOf(int ch, int fromIndex)
返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
int lastIndexOf(String str)
返回指定子字符串在此字符串中最右边出现处的索引。
int lastIndexOf(String str, int fromIndex)
返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
String substring(int start):
从指定位置开始截取字符串,默认到末尾。
String substring(int start,int end):
从指定位置开始到指定位置结束截取字符串。
public static void main(String[] args) {
// String 中的常用方法介绍
/*
* int indexOf(int ch):
* 返回指定字符在此字符串中第一次出现处的索引。
* int indexOf(int ch,int fromIndex):
* 返回指定字符在此字符串中从指定位置后第一次出现处的索引。
* int indexOf(String str,int fromIndex):
* 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
* int lastIndexOf(int ch, int fromIndex)
* 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。
* int lastIndexOf(String str)
* 返回指定子字符串在此字符串中最右边出现处的索引。
* int lastIndexOf(String str, int fromIndex)
* 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。
* String substring(int start):
* 从指定位置开始截取字符串,默认到末尾。
* String substring(int start,int end):
* 从指定位置开始到指定位置结束截取字符串。
*/
String s1 = "If you never abandon,I will in life and death";
/*
* int indexOf(int ch):
* 返回指定字符在此字符串中第一次出现处的索引。
* If you never abandon,I will in life and death
* 0123456789 ... .... 44
*/
//注意:若检索不到返回的是-1
System.out.println(s1.indexOf("your"));//输出的结果是:-1
//从左到右,还是以0开始数 ,返回第一个出现n这个字母的位置,很明显是第7个
System.out.println(s1.indexOf("n"));//输出的结果是:7
//从左到右,还是以0开始数 ,返回第一个出现never这个单词的位置,所以返回的是这个单词首个字母的位置
System.out.println(s1.indexOf("never"));//输出的结果是:7
//从左到右,还是以0开始数 ,返回第一个出现e这个字母的位置,认真看一下,never有两个e,但很明显返回的是第一次出现的那个,很明显是第8个
System.out.println(s1.indexOf("e"));//输出的结果是:8
//从左到右,还是以0开始数 ,返回第一个出现er这个单词的位置,认真看一下,never有两个e,但要检索的是er这个单词,所以查找的是后面的那个e,很明显是第10个
System.out.println(s1.indexOf("er"));//输出的结果是:10
/*
* int indexOf(int ch,int fromIndex):
* 返回指定字符在此字符串中从指定位置后第一次出现处的索引。
*/
/*
* 对比上面的:System.out.println(s1.indexOf("e"));//输出的结果是:8
* 你会发现:下面的这个程序是从第9个位置开始检索,所以找的是第二个e
*
*/
System.out.println(s1.indexOf("e",9));//输出的结果是:10
//注意:若检索不到返回的是-1
System.out.println(s1.indexOf("your",9));//输出的结果是:-1
/*
* indexOf(int ch,int fromIndex):
* //注意:若检索不到返回的是-1
*/
System.out.println(s1.indexOf('e',9));//输出的结果是:10
/*
* 先写这么多,迟点再更新
本人写得比较匆忙,再加上自己水平有限,可能会有不少的错误,欢迎各位指正
*/
}
作者: Jerry007 时间: 2016-10-30 13:48
太多太杂,能够全部看下去的,我必须服. 把重点归纳成几点,会更好.
作者: Garron 时间: 2016-10-30 13:50
这个我都是一个一个方法的写的
作者: Garron 时间: 2016-10-30 13:52
谢谢指点,没发过什么技术贴,没什么经验!
作者: Jerry007 时间: 2016-10-30 13:54
我知道啊,但是看着太多,很费力,这几个方法并不难,也不难理解,所以整理成几行重点就行了
作者: Jerry007 时间: 2016-10-30 14:01
技术贴最好是能把你在学习中遇到的想不通的问题发出来,问问论坛大神或其他小伙伴的意见,说不定就收到启发了;
再者是总结一些平时学习的时候大伙可能会忽视或者容易掉坑的知识点,发到论坛也是极好的;
另外就是分享资源了;
没事,慢慢你就懂了,如果没有一些大家想去了解的内容的话,很容易没人回复你的,到时候就会比较打击新人的积极了.
作者: rodgerun 时间: 2016-10-30 15:06
作者: zhengDF 时间: 2016-10-30 18:24
作者: 江江loves 时间: 2016-10-30 19:02
新手先收藏,,,,,,
作者: 蔡永汪 时间: 2016-10-30 19:26
膜拜中....代码太多会眼花~~~
作者: heima_01 时间: 2016-10-30 20:40
内容写得挺详细的!!
作者: 18600071691 时间: 2016-10-30 21:39
总结的很详细 点个赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |