String类概述
字符串是由多个字符组成的一串数据
字符串可以看成是字符数组
构造方法
public String(String original)
public String(char[] value)
public String(char[] value,int offset,int count)
直接赋值也可以是一个对象
注意:字符串是比较特殊的引用类型,直接输出该字符串对象打印的不是地址值而是该对象的值.
两个string不能用==判断是否相等,因为引用数据类型比较的是引用数据类型的地址值是否相等.
String s1 = new String("hello"); String s2 = "hello"; System.out.println("s1:"+s1); System.out.println("s2:"+s2); System.out.println("s1==s2:"+(s1==s2)); //false String s3 = "hello"; System.out.println("s1==s3:"+(s1==s3)); //false System.out.println("s2==s3:"+(s2==s3)); //true
代码的内存图如下
字符串的内容是存储在方法区的常量池里面的,是为了方便字符串的重复使用.
当用new String()时,堆中的string对象值为常量池中字符串的地址,string变量存的是堆中对象的地址.
当直接赋值时,strig变量的值为常量池中字符串的地址.
String类的判断功能
boolean equals(Object obj)
boolean equalsIgnoreCase(String str)
boolean startsWith(String str)
boolean endsWith(String str)
String类的获取功能
int length()
char charAt(int index)
int indexOf(String str)
String substring(int start)
String substring(int start,int end) //包括左边的不包括右边的
String类的转换功能
char[] toCharArray()
String toLowerCase()
String toUpperCase()
String类的其他功能
去除字符串两端空格
String trim()
按照指定符号分割字符串
String[] split(String str)
StringBuilder类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuilder就可以解决这个问题
StringBuilder是一个可变的字符串。字符串缓冲区类。
String和StringBuilder的区别:String的内容是固定的.StringBuilder的内容是可变的.
StringBuilder类的常用方法
添加功能
public StringBuilder append(任意类型)
反转功能
public StringBuilder reverse()
StringBuilder和String相互转换
StringBuilder-->String: stringBuilder.toString();
String-->StringBuilder: new StringBuilder(str);