Day_03
- String 的常用方法、StringBuilder 的常用方法。
- 两者之间的区别。
一、 String 类
-
字符串的内容是存储在方法区的常量池里面的。是为了方便字符串的重复使用。
-
创建对象赋值与直接赋值的区别:其实质都是指向方法区的常量池,只是方式不同。
A:创建对象赋值:new出来的其实是一个在堆内存引用,之后这个引用在指向常量池。如同 指针的赋值一样 (String)string 这个指针等于 new 出来的堆内存指针(指针也需要内存)的值(指向,也就是常量池)。
B:直接赋值:(String)string 这个指针直接指向常量池。
C:String s1 = new String(“hello”);//new出来的对象存储在堆中
String s2 = “hello”;
System.out.println(“s1s2:" + (s1 == s2));//false
String s3 = “hello”;
System.out.println("s1s3:” + (s1 == s3));//false
System.out.println(“s2==s3:” + (s2 == s3));//true -
常用方法:
- boolean String.equals(String string) // 判断字符串的值是否相等
- boolean String.startWith(String string) //判断字符串开头是否以string开始
- boolean String.endWith(String string) //判断字符串是否以string结束
- char String.charAt(int index)//返回字符串指定索引处的字符
- String[] String.split(String string)//以string分割字符串并返回分割后的字符数组
二、 StringBuilder 类 :是一个可变的字符串被称为字符串缓冲区类
- 与String的区别:
A:String 是固定不变的。
B:StringBuider 的值是可变的。 - StringBuilder 类解决了字符串的拼接产生的既费时又浪费空间的问题。字符串每次拼接会产生一个新的String 在常量池中。
- 成员方法:
A:public int capacity();//返回当前容量 默认是十六个字符 理论值
B:public int length();//返回当前长度 实际值
6.常用方法:
A:添加功能 StringBuider append( 任意类型):返回的是自身对象,而String则是生成一个新的常量
B:反转功能 StringBuider reverse():颠倒字符串 。小知识:如何判断一个字符串是否是回文串呢?只要颠倒后的字符串和从前的字符串相同就是回文串。