java中intern,JAVA中String的intern方法
JAVA字符串
JAVA中会经常用到字符串,字符串存放与字符串常量池。同一个字符串常量,在常量池只有一份副本。
通过双引号声明的字符串,直接保存在常量池。
如果是String对象,可以通过String.intern方法,把字符串常量保存到常量池。
JAVA中关于intern的面试题
String s = new String("rumenz.com");
s.intern();
String s2 = "rumenz.com";
System.out.println(s == s2);
String s3 = new String("rumenz") + new String(".com");
s3.intern();
String s4 = "rumenz.com";
System.out.println(s3 == s4);
结果
JDK1.6以及以下:false false
JDK1.7以及以上:false true
结果分析
① JDK1.6中将字符串常量存放于永久带的常量池中。永久带和堆是物理隔离的。当调用s.intern()时,如果常量池不存在"rumenz.com" ,就直接在永久带创建一个"rumenz.com"
② JDK1.7中字符串常量池在堆中。当调用s.intern()时,如果常量池不存在"rumenz.com",直接存储堆中的引用。
String s = new String("rumenz.com"); //生成常量池中的"rumenz.com"和堆中的字符串对象
s.intern(); //先查常量池存不存在"rumenz.com",如果不存在就生成"rumenz.com",jdk1.6和jdk1.7有区别 ① ②
String s2 = "rumenz.com"; //直接在常量区生成"rumenz.com"
System.out.println(s == s2);
String s3 = new String("rumenz") + new String(".com");
//常量区分别生成"rumenz"和".com",堆区生成s3对象,值为"rumenz.com",注意此时常量区并没有"rumenz.com"
s3.intern();//常量区生成"rumenz.com"
String s4 = "rumenz.com"; //jdk1.6直接返回"rumenz.com" ,jdk1.7后则返回对s3的引用
System.out.println(s3 == s4);
java中intern,JAVA中String的intern方法相关推荐
- java hashcode返回值_Java String hashCode() 使用方法及示例
Java String hashCode() 使用方法及示例 Java String hashCode()方法返回字符串的哈希码. 字符串hashCode()方法的语法为: string.hashCo ...
- java解析string_java读取文件内容为string字符串的方法
直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 */ private String readCityFile() { File file02 = new File(path_xinfu, ...
- java读取string_java读取文件内容为string字符串的方法
java读取文件内容为string字符串的方法 发布时间:2020-10-02 22:03:04 来源:脚本之家 阅读:67 作者:tmgg 直接就把项目中的方法贴出来吧 /** * 读出城市列表文件 ...
- 深入理解Java类加载器:Java类加载原理解析
http://blog.csdn.net/zhoudaxia/article/details/35824249 1 基本信息 每个开发人员对java.lang.ClassNotFoundExcetpi ...
- Java提升篇:理解String 及 String.intern() 在实际中的应用
String的深入解析 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些 ...
- Java中String类intern()详解
1.背景 在开发过程中很多朋友,由于不会正确使用intern(),导致开发的程序,执行效率比较差.同时最近发现一道非常有意思的关于intern()的面试题,这道面试题还是有不小的难度,相信很多朋友看到 ...
- java intern_java String的intern方法
我们知道再jvm的运行时内存可以分为堆.方法区.程序计数器.虚拟机栈和本地方法栈.而在方法区中有一个字符串常量池,用来保存字符串这个不可变量.如果我们使用String str=new String(& ...
- Java String的intern
String.intern()原理 String.intern()是一个Native方法,底层调用C++的 StringTable::intern 方法,源码注释:当调用 intern 方法时,如果常 ...
- Java技术——你真的了解String类的intern()方法吗
0.引言 什么都先不说,先看下面这个引入的例子: [java] view plain copy String str1 = new String("SEU")+ new Strin ...
- java 中的string_Java中String揭秘
String对象是我们日常使用的对象类型,字符串对象或者其等价对象(如char数组),在内存中总是占据了最大的空间块,因此如何高效地处理字符串,是提高系统整体性能的关键. 在此之前,String作为一 ...
最新文章
- C#创建MQTT客户端接收服务器信息
- HTML5视频的使用总结
- SpringCloud教程- 服务消费者(Feign)(SpringCloud版本Finchley)
- SAP ABAP Netweaver服务器的标准登录方式讲解
- python中为什么没有自增或者自减
- Python3.6字符串新特性
- 找回华为云删除的通讯录_找回小米手机误删照片只要10秒!人人都知道的方法,你怎能不知道...
- float类型转integer_【第3章:Java基础程序设计】_Java数据类型
- Windows下JetBrains CLion的pthread使用配置
- python脚本转换为EXE文件
- 基于 WebRTC 构建 Web SIP Phone
- 应用于电力电子变压器的双向DC_DC变换器综述(学习笔记)
- 又是一年金九银十!一起看看这些大厂面试真题查漏补缺吧,程序员翻身之路
- mysql 赋权_《MySQL数据库》MySQL用户赋权
- 计算机内部可以用哪两种处理器封装类型,电脑CPU处理器封装形式大盘点
- “卖惨”的悲情牌打多了,营销终将变“悲剧”
- 输入框限制输入表情的方法
- Faster RCNN训练FLIR红外线数据集
- 常用的时序图软件收集
- 详谈 UNIX 环境进程异常退出