第九章 String常用方法(charAt,toLowerCase, toUpperCase,trim,concat,compareTo,substring)
1.String类、String的实例化方式、String拼接操作
(1)①String声明为final的,不可被继承;
②String实现了Serializable接口:表示字符串是支持序列化的;实现了Comparable接口,表示String可以比较大小。
③String内部定义了final char[] value用于存储字符串数据;
④String:代表不可变的字符序列,简称:不可变性。
体现1: 当对字符串重新赋值时,需要重新指定内存区域赋值,不能使用原有的value进行赋值;
体现2:当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值;
体现3:当调用String的replace()方法时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值;
⑤通过字面量的方式(区别与new方式)给一个字符串赋值,此时的字符串值声明在字符串常量池中;
⑥字符串常量池是不会存储相同内容的字符串的。
(2)String的实例化方式
①通过字面量的方式:此时字符串s1和s2的数据声明在方法区中的字符串常量池中;
② 通过new+构造器的方式:此时字符串s1和s2保存的地址值,是数据在堆空间中开辟空间以后对应的地址值。
③String s=new String(“abc”);创建对象,在内存中创建了两个对象,一个是堆空间中new结构,另一个是char[]对应的常量池中的数据:“abc”。
Person p1=new Person("aa",12);
Person p2=new Person("aa",12);
System.out.println(p1.name.equals(p2.name));//true
System.out.println(p1.name==p2.name);//true
(3)String拼接操作
①常量与常量的拼接结果在常量池中,且常量池中不会存在相同内容的常量;
②只要其中有一个是变量,结果就在堆中;
③如果拼接的结果调用intern()方法,返回值就在常量池中。
2.String常用方法1
- int length():返回字符串的长度: return value.length
- char charAt(int index): 返回某索引处的字符return value[index]
- boolean isEmpty():判断是否是空字符串:return value.length == 0
- String toLowerCase():使用默认语言环境,将 String 中的所有字符转换为小写
- String toUpperCase():使用默认语言环境,将 String 中的所有字符转换为大写
- String trim():返回字符串的副本,忽略前导空白和尾部空白
- boolean equals(Object obj):比较字符串的内容是否相同
- boolean equalsIgnoreCase(String anotherString):与equals方法类似,忽略大小写
- String concat(String str):将指定字符串连接到此字符串的结尾。 等价于用“+”
- int compareTo(String anotherString):比较两个字符串的大小
- String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
- String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
public void test(){
String s1="helloworld";
System.out.println(s1.length());//10
System.out.println(s1.charAt(0));//h
System.out.println(s1.isEmpty());//false
System.out.println(s1.toLowerCase());//helloworld
System.out.println(s1.toUpperCase());//HELLOWORLD
String s3=" he llo world ";
String s4=s3.trim();
System.out.println("--"+s3+"--");//-- he llo world --
System.out.println("--"+s4+"--");//--he llo world--
String s5="helloworld";
String s6="HelloWorld";
System.out.println(s5.equals(s6));//false
System.out.println(s5.equalsIgnoreCase(s6));//true
String s7="abc";
String s8=s7.concat("def");
System.out.println(s8);//abcdef
String str1="abc";
String str2= "abe";
System.out.println(str1.compareTo(str2));//-2 负数表示str1小,正数表示str1大,0表示两个一样大
String str3="helloschool";
String str4=str3.substring(2);
System.out.println(str4);//lloschool
String str5=str3.substring(1,5);
System.out.println(str5);//ello
}