在我们的编程中,经常需要用到对字符串的操作。所以我们需要对字符串类(String)的一些成员方法进行熟悉,这有利于我们后续的学习。
1.关于判断字符串对象内容的一些成员方法
(1) boolean equals(Object obj) :判断两个字符串对象的内容是否相等,区分大小写。
(2)boolean equalsIgnoreCase(String str):判断两个字符串对象的内容是否相等,不区分大小写。
(3)boolean startsWith(String str):判断字符串对象是否以给定的字符串开头。
(4)boolean endsWith(String str):判断字符串对象是否以给定的字符串结尾。
(5)boolean contains(String str):判断字符串对象是否包含给定的字符串。
通过案例记忆:
public class Test1 {
public static void main(String[] args) {
String username="ABIN";
//String类中的成员方法一:equals(判断字符串的内容是否相等,区分大小写)
if(username.equals("abin"))
{
System.out.println("用户名正确");
}
else
{
System.out.println("用户名不正确");
}
//String类中的成员方法二:equalsIgnoreCase(判断字符串的内容是否相等,不区分大小写)
if(username.equalsIgnoreCase("abin"))
{
System.out.println("用户名正确");
}
else
{
System.out.println("用户名不正确");
}
}
}
public class Test2 {
public static void main(String[] args) {
//String类中的成员方法三:startsWith(String str)用来判断字符串对象是否以给定的字符串开头
//String类中的成员方法四:endsWith(String str)用来判断字符串对象是否以给定的字符串开头结尾
String str="http://www.baidu.com";
if(str.startsWith("http://")&&(str.endsWith(".com")||str.endsWith(".cn")))
{
System.out.println("网址正确");
}
else
{
System.out.println("网址不正确");
}
}
}
2.关于获取字符串内容的一些成员方法
(1)int indexOf(String str):返回指定字符串第一次出现的索引。
(2)int indexOf(char ch):返回指定字符第一次出现的索引。
(3)String substring(int start):截取字符串。返回给定位置开始截取的字符串。
(4)String substring(int start,int end):截取字符串。返回给定位置开始到指定位置结束截取的字符串。
(5)int length():获取字符串的长度
(6)char charAt(int index):返回字符串中给定索引处的字符。
(7)lastIndexOf:返回指定字符或字符串最后一次出现的索引。
案例练习:截取给定字符串中“[]”的内容
public class Test {
public static void main(String[] args) {
String str="[abc]窦骁.jpg";
int start=str.indexOf('[');
int end=str.indexOf(']');
String fanHao=str.substring(start+1,end);
System.out.println(fanHao);
}
}
运行结果为:abc
3.关于字符串替换的成员方法
(1)String toLowerCase():把字符串变成小写
(2)String toUpperCase():把字符串变成大写
(3)String replace(char oldChar,char newChar):用新的字符去替换旧的字符
(4)String replace(String oldStr,String newStr):用新的字符串去替换旧的字符串
(5)String[] split(String regex):字符串的切割
(5)String trim():去除字符串两端空格
String是不可变的,因此上面的操作都是生成新的字符串对象,要用返回值去取新的字符串。
4.StringBuffer:拼字符神器
当String s="11"+"22"+"33"时,java编译器会自动优化为:String s="112233"。但是当String s=s1+s2+s3时,每一次相加的过程都会产生一个临时字符串对象,这样会占据大量内存,效率低。
但是用StringBuffer类的话就不会产生这种情况。
StringBuffer sb=new StringBuffer();
sb.append(s1);
sb.append(s2);
sb.append(s3);
String s=sb.toString();//一键拼接字符串
还有。JDK1.5以后,增加了一个新的类StringBuilder,它的用法和StringBuffer一样。
不同点是:StringBuffer是线程安全的,但效率略低。而StringBuilder是线程不安全的,效率高,适合用在单线程中。
5.基本数据类型包装类
在java中,像int、double、boolean这样的数据类型都是基本数据类型,不是类,因此不是面向对象的。但是在有的场合需要用到这样的数据类型的对象。所以java中提供了它们的包装类。byte->Byte,short->Short,char->Character等等类似于这样的。
举例:(以int类型举例,其他同下)
装箱:(将int型数据18进行包装)Integer i=new Integer(18);
拆箱: (将18从包装类里拿出来)int i1=i.intValue();
补充:JDK 1.5之后int和Integer之间转换不需要new Integer/i.intValue(),因为装箱拆箱是JDK自动进行的。