String类(重点):
一、String两种实例化方式:
1、直接声明并给其赋值
例: String temp="你好"; // 此方式只在堆空间中开辟了一个空间,不会产生多余的内容,且此方式会在字符串池中保存内容,如果之后再声明字符串的时候发现内容一样,则不会重新开辟空间,而是从内存池中直接取出数据继续使用。
2、使用new关键字给其赋值
例:String temp2=new String("你好"); //此方式在堆空间中开辟了两个空间
3、两者的区别:
(1)、 使用直接赋值的方式可以减少堆内存开销
二、String的比较方式
1、==方式,此方式是比较两个字符串的堆空间指向(即地址)是否相等。
2、equals()方式,此方式是比较两个字符串的值是否相同。
三、一个字符串实际上就是String的匿名对象
1、一个字符串是用“"”括起来的,那么一个字符串的常量实际上本身就属于String类的匿名对象。(因为它可以点出String类的许多方法)。
四、字符串的内容一旦声明则无法修改。
例:
public class Test{
public static void main(String[] args){
String str="Hello";
str+="world";
System.out.println(str);
}
}
以下是堆栈内存分析图
栈内存 堆内存
"Hello"
"world"
str "Hello world"
总结:字符串变量的改变,改变的是内存空间地址的指向,其内容没有任何改变。
五、字符串常用的操作方法(重点)
如:字符串的截取、字符串的查找、字符串的替换......等等!
见API文档中