首先,你得理解下JAVA的存儲區主要有三個:棧、堆、靜態區.這三個的生命周期不一樣,分配方式也不一樣,存儲內容也不一樣
String a="aaa"這裡的aaa存放就是在靜態區,如果還有後頭又定義一個string b="aaa",那麼java裡頭會把它也指向a指向的地方。整個aaa會一直等到你程序退出了才釋放空間
而String a1=new String("aaa").這裡aaa是放在堆區,它是動態分配的。由垃圾回收器來管理。你如果再定義一個
String b1=new String("aaa").那麼又會分配一個新的堆空間。a1和b1 是不會指到同一個內存空間的。