JAVA中intern()方法的详解
很多童鞋可能在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()方法的详解相关推荐
- Java中getBytes()方法--使用详解
getBytes()方法详解 在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这表示在不同的操作系统下,返回的东西不一样! 1. str.getByte ...
- java中equals方法重写详解(彻底搞定)
首先上案例: public static void main(String[] args){String str1 = "abc";String str2 = "abc& ...
- Java中的static关键字详解
** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...
- java中的进制输出转换_Java I/O : Java中的进制详解
作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...
- Java中的Runtime类详解
Java中的Runtime类详解 1.类注释 /**Every Java application has a single instance of class Runtime that allows ...
- java中properties作用,Java中Properties的使用详解
Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支 持的配置文件,配置文件中很多变量是经常改变的,这样做也 ...
- Java 中的伪共享详解及解决方案
转载自 Java 中的伪共享详解及解决方案 1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的.目前主流的 CPU Cache 的 Cache Line 大小都是 ...
- java中list和map详解
java中list和map详解 一.概叙 List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口, List下有ArrayList,Vector,LinkedL ...
- stringtokenizer java_基于Java中的StringTokenizer类详解(推荐)
StringTokenizer是字符串分隔解析类型,属于:Java.util包. 1.StringTokenizer的构造函数 StringTokenizer(String str):构造一个用来解析 ...
最新文章
- python装饰器实例-Python装饰器原理与简单用法实例分析
- Webpack 入门教程
- 13、 LEFT/RIGHT JOIN:外连接(左连接,右连接)
- 10.Spark之RDD及编程接口
- ubuntu16.04終端補全忽略大小寫
- 《你好,李焕英》总票房逆袭《哪吒》 成中国影史亚军
- 3-7 DNA序列(DNA Consensus String, ACM/ICPC Seoul 2006, UVa1368)
- logback日志pattern_003、Spring Boot使用slf4j进行日志记录
- goodbye cnblogs
- 阿里文娱实战 | 小而美的 egg-react-ssr 开源实现方案
- 判断显卡好坏的步骤、新买显卡装机后不亮解决
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_6、SpringBoot2.xHTTP请求配置讲解...
- 产品经理面试——简历填写
- Laravel框架实现中英文双语站
- matlab画对数直方图,matlab中函数bar绘制直方图
- arcgis python计算面积_如何在ARCMAP里面计算面积
- 我家云刷机omv如何更改设置文件夹权限
- 【SpringCloud】Gateway新一代网关
- 西门子杯-工业信息网络化
- 【微电网优化】基于粒子群算法求解热电联供型微电网经济运行优化问题含Matlab源码
热门文章
- 主动减负的“蚂蚁兵团”,还能成为“大象”吗?
- 南邮 OJ 1573 雷曼兔
- mybatis--动态语句查询
- html实现文本框透明度,CSS透明实现方法
- 2022-2028年中国生活垃圾转运站行业竞争现状及投资决策建议报告
- 使用iptables进行sta 与 ap之间的路由
- Python实现.gif图片拆分为.png图片
- 【树叶分类】基于BP神经网络植物叶片分类Matlab代码
- ​富士康能否凭借量产电动车拿到苹果汽车的代工订单?
- Codeforces 400D Dima And Bacteria 暴力+Floyd