1.String对象的初始化
/*
两种初始化方法,一种是直接用字符串赋值,一种是用面向对象的方法初始化
*/
String str="hello";
String str=new String("hello");
public class Test {
public static void main(String[] args) {
String str1="hello";
String str2="hello";
String str3=new String("hello");
String str4=new String("hello");
if(str1==str2)
System.out.println("str1与str2相等");
else
System.out.println("str1与str2不相等");
if(str1==str3)
System.out.println("str1与str3相等");
else
System.out.println("str1与str3不相等");
if(str3==str4)
System.out.println("str3与str4相等");
else
System.out.println("str3与str4不相等");
}
}
输出结果是: str1与str2相等str1与str3不相等
str3与str4不相等
String str1="hello"这样创建的对象,会先去常量池查找是否有此字符串,若没有则在常量池中创建次字符串。最后str1成为指向常量池中此字符串的引用。
String str3=new String("hello")这样创建的对象,会先去常量池查找是否有此字符串,若没有则在常量池中创建次字符串。然后再在堆中创建常量池中此字符串的拷贝对象。最后str3成为指向该拷贝对象的引用。
这样有很容易明白为什么str1与str2相等,str1与str3不相等,str3与str4不相等。
PS:对象是否相等用"==",如果要判断对象的值是否相等可以用"equals()"。
2.String类的常用操作
2.1charAt()方法
返回相应索引位置的字符。索引值从0开始,若索引越界程序会报错。
String str="hello";
str.charAt(1);//返回的值是‘e’
2.2equals()与equalsIgnoreCase()方法
equals()方法:如果两个字符串具有相同的字符和长度并且大小写相同,则返回true,否则返回false。
equalsIgnoreCase()方法:在忽略大小写的情况下,如果两个字符串具有相同的字符和长度,则返回true,否则返回false。
String str="hello";
str.equals("hello");//返回true
str.equals("hElLo");//返回true
2.3length()方法
求字符串的长度
String str="hello";
str.length();//返回值是5
2.4indexOf()与lastIndexOf()方法
indexOf()方法:返回的是搜索的字符或字符串首次出现的位置。
lastIndexOf()方法:返回的是搜索的字符或字符串最后一次出现的位置。
若没有搜到,两者都返回-1。
String str="hello";
str.indexOf('l');//返回值是2
str.lastIndexOf('l');//返回值是3
2.5trim()方法
返回字符串去掉前导空白和尾部空白的一个副本。
String str=" hello ";
str.trim();//返回值是"hello"
2.6substring()方法
substring(int beginIndex)方法:返回从指定索引位置开始截取字符串直到该字符串的结尾的子串。
substring(int beginIndex,int endIndex)方法:返回从开始索引位置到结束索引位置的的子串。子串中不包含结束索引位置的字符。
String str="hello";
str.substring(1);//返回值是"ello"
str.substring(1,4);//返回值是"ell"
2.7split()方法
split(String regex)方法:根据给定正则表达式的匹配拆分此字符串,返回值类型是字符串数组。
split(String regex,int limit)方法:根据给定正则表达式的匹配拆分此字符串,返回值类型是字符串数组,同时限制返回字符串数组的大小。
String str="hello";
str.split("l");//返回{"he","","o"}
str.split("l",2);//返回{"he",""}
2.8replace()方法
将指定的字符或字符串替换成新的字符或字符串。
String str="hello";
str.replace('h','Q');//返回值是"Qello"
2.9toLowerCase()与toUpperCase()方法
toLowerCase()方法:将字符串中所有字符转换成小写。
toUpperCase()方法:将字符串中所有字符转换成大写。
String str="Hello";
str.toLowerCase();//返回值是"hello"
str.toUpperCase();//返回值是"HELLO"
PS:具有大小写不仅仅只有字母。
2.10startsWith()与endsWith()方法
startsWith()方法:测试此字符串是否以指定的前缀开始。返回值类型是布尔类型。
endsWith()方法:测试此字符串是否以指定的后缀结束。返回值类型是布尔类型。
String str="hello";
str.startsWith("he");//返回值是true
str.endsWith("lo");//返回值是true