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以后放在一个独立空间里面,叫做“元空间”

  • 相关阅读:
    Java编程的逻辑 (74)
    Java编程的逻辑 (73)
    Java编程的逻辑 (72)
    Java编程的逻辑 (71)
    Java编程的逻辑 (70)
    Java编程的逻辑 (69)
    Java编程的逻辑 (68)
    Java编程的逻辑 (67)
    透视校正插值
    摄像机成像模型
  • 原文地址:https://www.cnblogs.com/lshao/p/9689586.html
Copyright © 2011-2022 走看看