关于String的intern的一个题目
public static void main(String[] args) {String str1 = new StringBuilder("计算机").append("软件").toString();System.out.println(str1.intern() == str1);String str2 = new StringBuilder("ja").append("va").toString();System.out.println(str2.intern() == str2);
}
输出结果
true
false
intern方法之前是在常量池寻找有没有这个字符串,如果有就返回它,没有就在常量池
创建一个,但是在jdk1.7之后,只是在常量池中记录首次出现的实例引用,
也就是 例如有 堆中的一个字符串对象,他只会把这个引用给复制过去
在这个题目里
public synchronized String toString() {return new String(value, 0, count);}
第一个当调用toString方法的时候,会在堆中创建一个对象,当第二次调用intern方法的时候,会返回这个对象的引用,因此为true
第二个因为java这个字符串已经在常量池中存在了,所以返回的肯定不会是你新创建的对象,所以为false
加载java这个字符串应该是在System类中,有个静态变量
private static final String launcher_name = “java”;
new String(value, 0, count); 和 new String(“XX”)是不同的,不用去考虑这个。
关于String的intern的一个题目相关推荐
- 深入了解String和intern
引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...
- 运行时常量池_从String的intern()到常量池
前言 在知乎上遇到一个刚学Java就接触的字符串比较的问题: 通常,根据"==比较的是地址,equals比较的是值"介个定理就能得到结果.但是String有些特殊,通过new St ...
- Java String的intern
String.intern()原理 String.intern()是一个Native方法,底层调用C++的 StringTable::intern 方法,源码注释:当调用 intern 方法时,如果常 ...
- String中intern的方法
原文地址:http://www.cnblogs.com/wanlipeng/archive/2010/10/21/1857513.html String中intern的方法 首先查看官方API那个的解 ...
- Java中String类intern()详解
1.背景 在开发过程中很多朋友,由于不会正确使用intern(),导致开发的程序,执行效率比较差.同时最近发现一道非常有意思的关于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 ...
- intern string java_聊聊java String的intern
序 本文主要研究一下java String的intern String.intern() java.base/java/lang/String.java public final class Stri ...
- intern string java_Java-String.intern的深入研究
When---什么时候需要了解String的intern方法: 面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性.String ...
最新文章
- 上海理工大学第二届“联想杯”全国程序设计邀请赛 - Dahno Dahno(SW)
- 洛谷 P1417 烹调方案 (01背包拓展)
- JAVA—HTTP客户端警告:Going to buffer response body of large or unknown size.
- activiti流程信号捕获事件触发signalEventReceived
- linux的O的字体让我满意那些
- AudFree Tidable Music Converter for Mac - 音乐格式转换软件
- 2019最新易桥(HttpPrinter) web打印控件完整版版|HttpPrinter web打印控件下载
- logback springProperty 标签不起作用
- 2794: [Poi2012]Cloakroom
- 数据结构与算法(java):线性表(链表-双向链表)
- 关于isalpha——计算英文单词的个数
- matplotlib 设置坐标轴位置(spines),设置坐标别名(xticks,yticks)
- ios中嵌套h5做的app,长按图片默认会有放大效果;如何禁止
- lstm 文本分类_带有lstm和单词嵌入的灾难推文上的文本分类
- 计算机word2003试题,计算机应用基础Word2003试题新
- 根据用户的搜索需求,进行智能推送
- css 隐藏滚动条 竖向y滚动,横向x不滚动
- “银联在线支付”签约无需任何条件,个人也可以完成签约
- 大学生计算机python_人人都能学计算机:计算机科学入门与Python编程_学堂在线章节测试答案...
- Unity动态加载和内存管理(三合一)