zoukankan      html  css  js  c++  java
  • intern()方法的使用

    intern()

    intern方法的作用是:如果字符串常量池中已经包含一个字符串等于此String对象的字符串,则返回常量池中的这个String对应的对象,

    否则将其添加到常量池并返回常量池中的引用。

    在jdk1.7以后,就不会像之前那样把String对象复制到常量池,而仅仅复制堆中String对象的引用至常量池。

    public class RuntimeConstantPool {
        public static void main(String[] args) {
            //放在了堆中
            String tr1=new StringBuilder("常量").append("池").toString();
            //将"常量池"这个字符串的引用放入常量池
            String tr2=tr1.intern();
            System.out.println(tr2==tr1);
            
            String st=new StringBuffer("jav").append("a").toString();
            //"java"这个字符串已经存在在常量池里
            String st2=st.intern();
            System.out.println(st2==st);
        }
    }

    故这段代码在1.7+版本运行为true,false,在1.6-则为 false,false。

    常量池的位置

    JAK1.6在方法区
    JAK1.7放在堆里面
    JAK1.8以后放在一个独立空间里面,叫做“元空间”

  • 相关阅读:
    Kth Ancestor 第k个祖先问题
    centOS 6.4挂载centOS分区
    上阶段学习总结
    code testing
    Helo~
    leetcode--Maximum Subarray
    leetcode--Climbing Stairs
    leetcode--Search Insert Position
    leetcode--Best Time to Buy and Sell Stock III
    leetcode--Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/lshao/p/9689586.html
Copyright © 2011-2022 走看看