首先,String對象是final修飾的常量,是不可改變的字符串 當String對象創建完畢后,該對象的內容不可以改變的,一旦內容改變就會創建一個新的對象
如下圖一旦s1的值改變了,s1對象的hashCode就改變了
最多創建一個String對象,最少不創建String對象. 如果在方法區中的常量池中存在”AB”,那么s1直接引用,不需要創建String對象,否則先在常量池中創建”AB”,再引用
String s2 = new String("AB");最多創建兩個String對象,至少創建一個String對象,先看常量池中是否有”AB”,如果沒有先創建,然后在堆中創建一個String對象,引用常量池中”AB”的地址,再把自己的地址給s2. new關鍵字絕對會在堆空間中創建內存區域,所以至少創建一個對象
新聞熱點
疑難解答