很多童鞋可能在Java考试中或者笔试中遇到String字符串比较相等的问题,今天就来谈一谈
在JAVA虚拟机中,有运行时数据区,包含线程共享的:堆,方法区 和线程隔离的:程序计数器,Java虚拟机栈,本地方法栈.其中方法区包含一块取域,叫做常量池,因为String类型被用到的频率高,所以HotSpot将它放入了常量池.

Intern()

在<深入理解Java虚拟机>一书中解释道:
String.intern()是一个Native方法,它的作用是:如果字符常量池中已经包含一个等于此String对象的字符串,则返回常量池中字符串的引用,否则,将新的字符串放入常量池,并返回新字符串的引用’
不同版本的JAVA虚拟机对此方法的实现可能不同,下面我们通过一个例子来说明

package com.tangbaobao.test1;import org.junit.jupiter.api.Test;/*** 测试intern方法** @create 2018/02/02 15:19****/
public class Test2 {@Testpublic void fun1(){String str1 = new StringBuilder("计算机").append("软件").toString();String str2 = new StringBuilder("Ja").append("va").toString();String str3 = "java";String str4 = new String("java");System.out.println(str1.intern() == str1);//因为之前没有所以创建的引用和intern()返回的引用相同System.out.println(str2.intern() == str2);//"java在StringBuilder()之前已经出现过",所以intern()返回的引用与新创建的引用不是同一个System.out.println(str3 == str4);}
}

返回结果:

true
false
false

JAVA中intern()方法的详解相关推荐

  1. Java中getBytes()方法--使用详解

    getBytes()方法详解 在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这表示在不同的操作系统下,返回的东西不一样! 1. str.getByte ...

  2. java中equals方法重写详解(彻底搞定)

    首先上案例: public static void main(String[] args){String str1 = "abc";String str2 = "abc& ...

  3. Java中的static关键字详解

    ** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...

  4. java中的进制输出转换_Java I/O : Java中的进制详解

    作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...

  5. Java中的Runtime类详解

    Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...

  6. java中properties作用,Java中Properties的使用详解

    Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...

  7. Java 中的伪共享详解及解决方案

    转载自  Java 中的伪共享详解及解决方案 1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的.目前主流的 CPU Cache 的 Cache Line 大小都是 ...

  8. java中list和map详解

    java中list和map详解 一.概叙 List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口, List下有ArrayList,Vector,LinkedL ...

  9. stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)

    StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...

最新文章

  1. python装饰器实例-Python装饰器原理与简单用法实例分析
  2. Webpack 入门教程
  3. 13、 LEFT/RIGHT JOIN:外连接(左连接,右连接)
  4. 10.Spark之RDD及编程接口
  5. ubuntu16.04終端補全忽略大小寫
  6. 《你好,李焕英》总票房逆袭《哪吒》 成中国影史亚军
  7. 3-7 DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368)
  8. logback日志pattern_003、Spring Boot使用slf4j进行日志记录
  9. goodbye cnblogs
  10. 阿里文娱实战 | 小而美的 egg-react-ssr 开源实现方案
  11. 判断显卡好坏的步骤、新买显卡装机后不亮解决
  12. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_6、SpringBoot2.xHTTP请求配置讲解...
  13. 产品经理面试——简历填写
  14. Laravel框架实现中英文双语站
  15. matlab画对数直方图,matlab中函数bar绘制直方图
  16. arcgis python计算面积_如何在ARCMAP里面计算面积
  17. 我家云刷机omv如何更改设置文件夹权限
  18. 【SpringCloud】Gateway新一代网关
  19. 西门子杯-工业信息网络化
  20. 【微电网优化】基于粒子群算法求解热电联供型微电网经济运行优化问题含Matlab源码

热门文章

  1. 主动减负的“蚂蚁兵团”,还能成为“大象”吗?
  2. 南邮 OJ 1573 雷曼兔
  3. mybatis--动态语句查询
  4. html实现文本框透明度,CSS透明实现方法
  5. 2022-2028年中国生活垃圾转运站行业竞争现状及投资决策建议报告
  6. 使用iptables进行sta 与 ap之间的路由
  7. Python实现.gif图片拆分为.png图片
  8. 【树叶分类】基于BP神经网络植物叶片分类Matlab代码
  9. ​富士康能否凭借量产电动车拿到苹果汽车的代工订单?
  10. Codeforces 400D Dima And Bacteria 暴力+Floyd