package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 当调用intern方法时,
* 如果池已经包含此字符串(equals确定),则返回池中字符串。
* 否则,将此String对象添加到池中并且返回该String对象的引用。
*/
public class StringConstantPool_Intern { @Test
public void test1() {
String a1 = "AA";//当调用intern方法时,如果池已经包含此字符串(equals确定),则返回池中字符串。否则,将此String对象添加到池中并且返回该String对象的引用。
a1.intern();
}
}
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @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 { @Test
public void test1() {
String a1 = "AA";//在常量池上创建常量AA
String a2 = "AA";//直接返回已经存在的常量AA
System.out.println(a1 == a2); //true
} }
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolAAAA { @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
} }
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolAABB { @Test
public void test1() {
String a1 = "AA"+"BB";//在常量池上创建常量AABB
String a2 = "AABB";//在常量池上创建常量AABB
System.out.println(a1 == a2); //true
} }
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolNAA { @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));
} }
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolNAABB { @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));
}
}
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolNAABBi { @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));
}
}
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolNAANBB { @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));
}
}
package zero.desk.stringconstantpool;

import org.junit.Test;

/**
* @author Zero
* @since 2019-09-17.
* Description:
* 思考题
*/
public class StringConstantPoolNAANBBi { @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. 1.flask基础

    1.flask和django的区别? flask,是一个轻量级的框架,内置了:路由/视图/模板(jinja2)/cookie/session/中间件. 可扩展强,第三方组件非常多,例如:wtforms ...

  2. Nginx专题(2):Nginx的负载均衡策略及其配置

    本文介绍了Nginx的负载均衡策略,一致性hash分配原理,及常用的故障节点的摘除与恢复配置. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第一期-宜信支付结算八方数据团队高级技术经理 ...

  3. KubeSphere 日志备份与恢复实践

    为什么需要日志备份 KubeSphere 日志系统使用 Fluent Bit + ElasticSearch 的日志采集存储方案,并通过 Curator 实现对 Index 的生命周期管理,定期清理久 ...

  4. IOS中获取各个文件的目录路径的方法和NSFileManager类

    转自:http://blog.sina.com.cn/s/blog_5fb39f910101di92.html IOS中获取各种文件的目录路径的方法 iphone沙箱模型的有四个文件夹,分别是什么,永 ...

  5. Python获取 bing 地图发布自己的 TMS 服务(二)解决海量瓦片存取问题

    金字塔结构的瓦片数量有多大 以目前互联网常用的WebMecator为例 第一层:4幅256*256影像瓦片(JPG或PNG等) 第二层:42 第三层:43 依次类推比如计算第1层至第18层的瓦片总数目 ...

  6. POJ 3041 Asteroids(二分图模板题)

    Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape of an N x N g ...

  7. Centos 8 安装 Nginx

    安装步骤: /* 1. 安装编译工具及库文件 */ yum -y install gcc automake autoconf libtool make && yum install g ...

  8. Django对DateTimeField时间字段查询QuerySet为空的解决方案

    今天在用的Django中的filter()方法对DateTimeField字段查询时碰到了问题,抓耳挠腮一下午,终于解决了,我觉得花了一下午的时间怎么着也得记录下吧(无语)...... 问题描述 : ...

  9. Oracle用户、角色、权限

    一.Oracle权限 系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言) 对象权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的) 1.Oracle系统权限 ​ o ...

  10. [answerer的算法课堂]简单描述4种排序算法(C语言实现)

    [answerer的算法课堂]简单描述4种排序算法(C语言实现) 这是我第一次写文章,想要记录自己的学习生活,写得不好请包涵or指导,本来想一口气写好多种,后来发现,写太多的话反而可读性不强,而且,我 ...