[Java] 01 String 内存分析

java

 1 public class StringTest{

2 public static void main(String[] args){

3 String str1 = new String("123");

4 String str2 = new String("123");

5 //str1和str2指向不同的内存

6 System.out.println(str1==str2);//false

7 System.out.println(str1.equals(str2));//true

8

9 String str3 = "123";

10 String str4 = "123";

11 System.out.println(str3 == str4);//str3和str4指向同一块内存 true

12 System.out.println(str3.equals(str4));//true

13

14 str3 = "234";

15 str4 = "456";

16 str4 = "789";

17 String str5 = "456";

18 //字符串常量,只要声明了就有内存分配,即使没有指向也不会被垃圾回收,str5不会再分配内存,因为已经存

19 //在"456"这块内存,直接被指向。

20

21 /**

22 * 由于String是字符串常量,每新建一个字符串就会分配一块内存,此时以下循环会分配100块

23 * 内存,但只有最后一块被使用,而且String Pool中的内存不会被回收,所以如果进行大量字符串叠加,请勿

24 * 使用此方法

25 */

26 String str6 = "";

27 for(int i=0;i<100;i++){

28 str6+=i;

29 }

30 System.out.println(str6);

31

32 /**

33 * 字符串叠加用此方法

34 */

35 StringBuilder sb = new StringBuilder("abc");

36 for(int i=0;i<100;i++){

37 sb.append(i);

38 }

39 System.out.println(sb.toString());

40 }

41 }

以上是 [Java] 01 String 内存分析 的全部内容, 来源链接: utcz.com/z/391619.html

回到顶部