zoukankan      html  css  js  c++  java
  • 字符串常量是在类加载还是在实际执行代码时才加载入运行时常量池?

    今天纠结了一个问题,就是字符串常量是在类加载还是在实际执行代码时才加载入运行时常量池?

    以下面的具体例子为例,环境为jdk1.8

    public class Demo {
        
        public static void main(String[] args) {
            String s1= "a"+ "a";
            s1.intern();
            String s2= "aa";
            System.out.println(s1 == s2);
        }
        
    }

    运行结果时true,说明类加载时并没有加载方法体内的字符串常量aa

    public class Demo {
        
        public String s = "aa";
        
        public static void main(String[] args) {
            String s1= "a"+ "a";
            s1.intern();
            String s2= "aa";
            System.out.println(s1 == s2);
        }
        
    }

    运行结果同样是时true,说明类加载时并没有加载类变量的字符串常量aa

    深入理解Java虚拟机的P42页讲到Class文件中的各种字面量和符号引用将在类加载后进入方法区的运行时常量池中存放。

    这句话和我写的例子不符合,网上查找了很多博客也没有找到类似的问题和解释。

    1码归1码共同探讨

     

  • 相关阅读:
    mui 页面跳转
    mui 下拉刷新
    mui 上拉加载更多
    mui 页面传值
    mui 监听app运行状态
    mui webview操作
    mui ajax方法
    ionic 图片加载失败,显示默认图片代替
    mui 侧滑菜单
    ionic中关于ionicView 的生命周期
  • 原文地址:https://www.cnblogs.com/lzxin/p/10389304.html
Copyright © 2011-2022 走看看