String的三种初始化方式

public class Test {
    public static void main(String[] args) {
        String str1 = "Hello, World !";     //直接初始化
        String str2 = new String("Hello, World !"); //直接创建一个对象
        String str3 = str1; //str3作为str1的引用
    }
}

关于String变量所需要注意的地方

String变量的本质:在堆上申请一块空间创建字符串,并让指针指向这块空间。

String变量发生改变(赋值),原指向的字符串空间不会被释放,而是重新申请一块空间创建字符串,并让指针指向这块空间。由于Java拥有自动内存管理机制,因此在程序运行结束或堆空间不足时会自动释放没有被引用的字符串空间。