码迷,mamicode.com
首页 > 编程语言 > 详细

[Java] String 内存分析

时间:2016-04-11 18:18:02      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

public class StringTest{
    public static void main(String[] args){
        String str1 = new String("123");
        String str2 = new String("123");
        //str1和str2指向不同的内存
        System.out.println(str1==str2);//false
        System.out.println(str1.equals(str2));//true

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

        str3 = "234";
        str4 = "456";
        str4 = "789";
        String str5 = "456";
        //字符串常量,只要声明了就有内存分配,即使没有指向也不会被垃圾回收,str5不会再分配内存,因为已经存                
        //在"456"这块内存,直接被指向。
        
        /**
         * 由于String是字符串常量,每新建一个字符串就会分配一块内存,此时以下循环会分配100块
         * 内存,但只有最后一块被使用,而且String Pool中的内存不会被回收,所以如果进行大量字符串叠加,请勿                 
         * 使用此方法
         */
        String str6 = "";
        for(int i=0;i<100;i++){
            str6+=i;
        }
        System.out.println(str6);
    }
}

 

[Java] String 内存分析

标签:

原文地址:http://www.cnblogs.com/frost-yen/p/5379226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!