String的intern方法演示及各种字符串的拼接对比
演示String的intern方法,以及各种拼接字符串的区别
package string;/*** @Author gzx* @create 2022-1-14 jdk8*/
public class Intern {public static void main(String[] args) {String s1 = new String("intern");//s1指向堆内存String s2="intern";//s2指向字符串常量池String s3 = s1.intern();//s3也指向字符串常量池(常量池中同一字符串只存一份),和s2指向同一内存单元String s0=new String("intern").intern();//s0也指向字符串常量池System.out.println(s0.hashCode());System.out.println(s1.hashCode());System.out.println(s2.hashCode());System.out.println(s3.hashCode());System.out.println(s1==s2);System.out.println(s3==s2);System.out.println(s0==s2);System.out.println("/");String s4="pre"+"sub";//s4指向字符串常量池String s5=new String("pre")+"sub";//s5指向堆内存的存储单元String s6=s5.intern();//s6也指向字符串常量池,和s4指向同一内存单元String s7=new String("pre").intern()+"sub";//s7指向堆中新的内存单元System.out.println(s4.hashCode());System.out.println(s5.hashCode());System.out.println(s6.hashCode());System.out.println(s7.hashCode());System.out.println(s4==s5);System.out.println(s4==s6);System.out.println(s4==s7);
// 只要是指向字符串常量池的引用,如果字符串的内容相同,那么这些引用指向的是同一块内存单元,所以这些引用地址都相同
// "this"+"that"这种类型的拼接存在于常量池,返回常量池中的引用地址
// new ("this")+"that"这种类型的拼接返回的是堆中的引用,有new参与的字符串拼接,返回的都是存在于堆中的新的引用,即使new了对象后接着调用intern方法(如果new了之后不参与拼接,则返回的是常量池中的地址引用,可对比s0和s7的结果总结)
// 任何字符串的引用调用intern方法,都返回在字符串常量池中的引用
}
}
结果
-1183762670
-1183762670
-1183762670
-1183762670
false
true
true
/
-980097859
-980097859
-980097859
-980097859
false
true
false
String的intern方法演示及各种字符串的拼接对比相关推荐
- Java之String系列--intern方法的作用及原理
原文网址:Java之String系列--intern方法的作用及原理_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java的String的intern方法的原理. 常量池简介 在 JAVA 语言中 ...
- Java String的intern方法
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...
- [转]String 之 new String()和 intern()方法深入分析
引入 String,是 Java 中除了基本数据类型以外,最为重要的一个类型了.很多人会认为他比较简单.但是和 String 有关的面试题有很多,下面我随便找两道面试题,看看你能不能都答对: Q1:S ...
- String中intern()方法
本文参考 https://blog.csdn.net/believesoul/article/details/79588305 ,我对这篇文章进行了一些小小的整理和修改.这篇文章很好的对intern( ...
- 使用String的intern方法节省内存
Attila Szegedis 在他讲述 JVM 知识的文档中一直强调,清楚知道内存中存储的数据量是非常重要的.我一开始感到十分惊讶,因为一般情况下,在企业开发中并不是经常需要关注对象的大小.他对此给 ...
- String中intern方法的作用
前言 读完这篇文章你可以了解,String对象在虚拟机内存中的存放,intern的作用,这么多String对象的创建到底有什么区别,String 创建的对象有几个!! 进入正题 先科普几个知识点 1. ...
- java intern_java String的intern方法
我们知道再jvm的运行时内存可以分为堆.方法区.程序计数器.虚拟机栈和本地方法栈.而在方法区中有一个字符串常量池,用来保存字符串这个不可变量.如果我们使用String str=new String(& ...
- 字符斜杠是合法常量吗_【面试秘籍】你对String的intern方法了解吗
我们先来看个例子: public class StringTest { public static void main(String[] args) { String a = "A" ...
- JDK8中String的intern()方法详细解读【内存图解+多种例子+1.1w字长文】
文章目录 一.前言 二.图文理解String创建对象 1.例子一 2.例子二 3.例子三 4.例子四 5.例子五 6.例子六 三.深入理解intern()方法 1. 源码查看 2. 例子一 3. 例子 ...
最新文章
- Unix操作系统背后的女程序员Lorinda Cherry去世,享年78岁
- MySQL学习笔记 约束以及修改数据表
- windows winrar 指令_Windows上WinRAR.exe命令行参数说明(转载) .
- html如何做卷展菜单,“选择”卷展栏(可编辑网格)
- 谈用VB无窗口透明Usercontrol编写透明浮动按钮
- easyexcel多个sheet导入_Easypoi实现excel多sheet表导入导出功能
- window.load和$(document).ready()事件
- php iterator接口,PHP预定义接口之Iterator(迭代器)接口演示
- 自制CMSIS-DAP下载器
- 小学计算机英语,小学英语电脑版
- 【下载】《大教堂和市集》:开放源代码运动的《圣经》
- 有一个多项式:Pn(x)=a0x+a1x+….+anx(n=10),它们的系数存放在一个一维数组中,编写程序,输入系数和x的值,计算并输出Pn(x)的结果。
- 苹果电脑带有双系统Mac/Win,如何更改默认启动系统?
- 01_行销(Marketing)里的有用的KPI-转换率 (Conversion Rate)
- 开源项目之饭否 for Android
- 离散数学及其应用_第1章_基础:逻辑和证明
- 拒绝java_java拒绝策略 - V丶zxw的个人空间 - OSCHINA - 中文开源技术交流社区
- 谷歌浏览器自动定时刷新网页插件名称
- 杭电oj刷题2022
- Matlab的BP汉字识别GU(写字板功能)
热门文章
- 软件测试 | 手把手教你如何使用 Charles 抓包工具(电脑+手机端)
- excel mysql在线库存_excel如何制作进货销售库存表
- luoguP1640
- 人脑与计算机之间有什么联系,人脑记忆功能与电脑工作原理之间的某些相似之处(自编)...
- php 外呼界面,一种WEB网页端话机系统及外呼方法与流程
- 《基于改进粒子群算法的混合储能系统容量优化》完全复现
- 如何编制项目进度计划
- 电厂防雷检测古建筑防雷检测河南万佳防雷检测验收
- 树莓派 gpio / 串口通信
- 英国Oracle电力,益和电力Oracle笔试题分享