1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 当调用intern方法时,
    * 如果池已经包含此字符串(equals确定),则返回池中字符串。
    * 否则,将此String对象添加到池中并且返回该String对象的引用。
    */
    public class StringConstantPool_Intern {
  6.  
  7. @Test
    public void test1() {
    String a1 = "AA";//当调用intern方法时,如果池已经包含此字符串(equals确定),则返回池中字符串。否则,将此String对象添加到池中并且返回该String对象的引用。
    a1.intern();
    }
    }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * /Users/zero/Code/Myself/Project/zero-Project/jvm/target/classes/zero/desk/stringconstantpool
    * javap -verbose StringConstantPoolAA
    * cd ../stringconstantpool
    */
    public class StringConstantPoolAA {
  6.  
  7. @Test
    public void test1() {
    String a1 = "AA";//在常量池上创建常量AA
    String a2 = "AA";//直接返回已经存在的常量AA
    System.out.println(a1 == a2); //true
    }
  8.  
  9. }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolAAAA {
  6.  
  7. @Test
    public void test1() {
    String a1 = new String("AA");//在堆上创建常量AA
    String a11 = a1.intern();
    String a2 = "AA";//在常量池上创建常量AA
    System.out.println(a1 == a2); //false
    System.out.println(a1 == a11); //false
    System.out.println(a11 == a2); //true
    }
  8.  
  9. }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolAABB {
  6.  
  7. @Test
    public void test1() {
    String a1 = "AA"+"BB";//在常量池上创建常量AABB
    String a2 = "AABB";//在常量池上创建常量AABB
    System.out.println(a1 == a2); //true
    }
  8.  
  9. }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAA {
  6.  
  7. @Test
    public void test1() {
    String a1 = "AA";//在常量池上创建常量AA
    String a2 = new String("AA");//在堆上创建对象AA
    String a3 = a2.intern();//常量池上存在常量AA,直接返回常量池上常量AA,即a1
    System.out.println(a1 == a2); //false
    System.out.println(a1 == a3); //true
    System.out.println(a2 == a3); //false
    System.out.println(System.identityHashCode(a1));
    System.out.println(System.identityHashCode(a2));
    }
  8.  
  9. }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAABB {
  6.  
  7. @Test
    public void test1() {
    String a3 = "AA"+new String("BB"); //在堆上创建对象AABB
    // String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //false
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a333));
    }
    }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAABBi {
  6.  
  7. @Test
    public void test1() {
    String a3 = "AA"+new String("BB"); //在常量池上创建常量AABB
    String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //true
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a33));
    System.out.println(System.identityHashCode(a333));
    }
    }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAANBB {
  6.  
  7. @Test
    public void test1() {
    String a3 = new String("AA")+new String("BB"); //在堆上创建对象AABB
    // String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //false
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a333));
    }
    }
  1. package zero.desk.stringconstantpool;
  2.  
  3. import org.junit.Test;
  4.  
  5. /**
    * @author Zero
    * @since 2019-09-17.
    * Description:
    * 思考题
    */
    public class StringConstantPoolNAANBBi {
  6.  
  7. @Test
    public void test1() {
    String a3 = new String("AA")+new String("BB"); //在常量池上创建常量AABB
    String a33 = a3.intern();
    String a333 = "AABB";//在常量池上创建常量AABB
    System.out.println(a333 == a3); //true
    //
    System.out.println(System.identityHashCode(a3));
    System.out.println(System.identityHashCode(a33));
    System.out.println(System.identityHashCode(a333));
    }
    }

JVM学习分享-思考题的更多相关文章

  1. JVM学习分享-练习题

    package org.fenixsoft.clazz; public class TestClass { private int m; public int inc() { return m + 1 ...

  2. JVM学习(4)——全面总结Java的GC算法和回收机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 一些JVM的跟踪参数的设置 Java堆的分配参数 -Xmx 和 –Xms 应该保持一个什么关系,可以让系统的 ...

  3. JVM学习(3)——总结Java内存模型

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: 为什么学习Java的内存模式 缓存一致性问题 什么是内存模型 JMM(Java Memory Model)简 ...

  4. jvm内存JVM学习笔记-引用(Reference)机制

    在写这篇文章之前,xxx已经写过了几篇关于改jvm内存主题的文章,想要了解的朋友可以去翻一下之前的文章 如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处 ...

  5. JVM学习04:类的文件结构

    JVM学习04:类的文件结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 类的文件结构知识要点Xmind梳理

  6. JVM学习03:性能监控工具

    JVM学习03:性能监控工具 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 性能监控工具知识要点Xmind梳理 案例分析 案例分析1-JPS 案例分 ...

  7. JVM学习02:GC垃圾回收和内存分配

    JVM学习02:GC垃圾回收和内存分配 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. GC垃圾回收和内存分配知识要点Xmind梳理 案例分析1-(G ...

  8. JVM学习01:内存结构

    JVM学习01:内存结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 内存结构知识要点Xmind梳理 案例分析 分析1 package com.h ...

  9. Swagger框架学习分享

    Swagger框架学习分享 转至元数据结尾 Created and last modified by 刘新宇 大约1分钟曾经 pageId=162045803#page-metadata-start& ...

随机推荐

  1. Too many open files的四种解决办法【华为云技术分享】

    [摘要] Too many open files有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd对该进程进行了限制,四 inotify达到上限. 领导见 ...

  2. 谁说微服务是Spring Cloud的独角戏?Service Mesh了解一下?

    Service Mesh 的概念自 2017 年初提出之后,受到了业界的广泛关注,作为微服务的下一代发展架构在社区迅速发酵,并且孵化出了诸如 Istio 等广受业界关注的面向于云原生 (Cloud N ...

  3. 【开发者portal在线开发插件系列三】字符串 及 可变长度字符串

    基础篇 基础场景见上面两个帖子,这里单独说明字符串和可变长度字符串的用法. 话不多说,开始今天的演(表)示(演) Profile和插件开发 添加一个string类型的属性: 在插件里添加一条数据上报消 ...

  4. es6 proxy浅析

    Proxy 使用proxy,你可以把老虎伪装成猫的外表,这有几个例子,希望能让你感受到proxy的威力. proxy 用来定义自定义的基本操作行为,比如查找.赋值.枚举性.函数调用等. proxy接受 ...

  5. Vue.js命名风格指南

    前言 本命名风格指南推荐了一种统一的命名规范来编写 Vue.js 代码.这使得代码具有如下的特性: 统一团队的命名规范,其它开发者或是团队成员更容易上手阅读和理解. IDEs 更容易理解代码,从而提供 ...

  6. Mysql基础01-语法

    数据库 数据的存储:将数据放到表中,表再放到库中. 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己.表名具有唯一性. 表由列组成,我们也称为字段.每个字段描述了它所含有的数据的意义表由列组 ...

  7. Zookeeper选取机制

    1)半数机制:集群中半数以上机器存活,集群可用.所以Zookeeper适合安装奇数台服务器. 2)Zookeeper虽然在配置文件中并没有指定Master和Slave.但是,Zookeeper工作时, ...

  8. Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener

    目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...

  9. tensorflow常用函数解释

    从二维数组中选一个矩形 import tensorflow as tf data = [[1,2,3,4,5,6,7,8],[11,12,13,14,15,16,17,18]] x = tf.stri ...

  10. 详解numpy的argmax

    从最简单的例子出发 假定现在有一个数组a = [3, 1, 2, 4, 6, 1]现在要算数组a中最大数的索引是多少.这个问题对于刚学编程的同学就能解决.最直接的思路,先假定第0个数最大,然后拿这个和 ...