今天翻看书时遇到了这样一个问题,对于String.intern()方法又有了一些认识和看法。首先我们看它的api

大意就是intern()方法会在常量池中记录首次出现的实例引用,但是在jdk1.6中却不是这样。jdk1.6中会将首次遇到的字符串实例

复制一份放在持久代里,返回的则是永久代中对于这个字符串的引用。

如下图

首先,这个运行环境是jdk1.7,运行后会分别的到true和false.这里由于StringBuilder 会在java堆上创建实例,intern()方法实现不会再复制实例,

只是在常量池中记录首次出现的实例引用,所以为true.而s2返回false是因为“java”这个字符串在执行StringBuilder()方法前已经出现过,

也就是说默认的在字符串常量池中已经有它的引用,不再符合“首次出现的原则”,所以返回false.而“计算机软件”这个字符串是首次出现的,所以

返回true.细节点就是“java”字符串的引用早就有了。这里参考了《深入理解java虚拟机》这本书。希望大家可以多多交流多提意见,感谢大家的观看。

对于java的Sting.intern()的一些注意的更多相关文章

  1. Java中Sting转Timestamp

    Java中Sting转Timestamp 时间转换.png

  2. 通过反编译深入理解Java String及intern(转)

    通过反编译深入理解Java String及intern 原文传送门:http://www.cnblogs.com/paddix/p/5326863.html 一.字符串问题 字符串在我们平时的编码工作 ...

  3. 通过反编译看Java String及intern内幕--费元星站长

    通过反编译看Java String及intern内幕   一.字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究.倒是面试或者笔试的时候,往 ...

  4. java jdk1.7后 sting intern()方法与之前的区别

    public static void main(String[] args) { String s1 = new StringBuilder("计算机").append(" ...

  5. Java中Sting类型对象内容不可改变

    String拥有一个特殊点叫:String对象的内容不可改变!   在调用诸如String对象的replace()等方法时,不是在原Sting对象的基础上改变对象内容,而是创建了一个新的String对 ...

  6. java String 中 intern方法的概念

    1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ne ...

  7. 深入理解java String 及intern

    一.字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究.倒是面试或者笔试的时候,往往会涉及比较深入和难度大一点的问题.我在招聘的时候也偶尔会 ...

  8. 通过反编译深入理解Java String及intern

    一.字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究.倒是面试或者笔试的时候,往往会涉及比较深入和难度大一点的问题.我在招聘的时候也偶尔会 ...

  9. java String的intern()方法

    intern()方法用于将字符串对象加入常量池中. public native String intern(); intern()方法返回的是一个常量池中的String对象(即常量池中某个String ...

随机推荐

  1. explain详解 和 show profiles

    explain出的有下列几项: 1.select_type 2.type 1.all 全表扫描,从表头扫描到表尾: 2.index 根据索引来读取数据,如果索引已包含了查询数据,只需扫描索引树,否则执 ...

  2. yield 实现range()函数

    def range(*args,step= 1): args = list(args) if len(args) == 2: yield args[0] while args[0]<args[1 ...

  3. NLP(十) 主题识别

    主题识别 是发现输入文本集合中存在的主题的过程 LDA算法,即狄利克雷分布算法 from nltk.tokenize import RegexpTokenizer from nltk.corpus i ...

  4. 洛谷P1582 倒水 二进制 lowbit __builtin_popcount

    P1582 倒水:https://www.luogu.org/problemnew/show/P1582 题意: 给定n瓶装有1升的水瓶,每次可以把两瓶装水量相同的水和成一瓶,问最少还要增加几瓶装有1 ...

  5. bzoj 1051 [HAOI2006]受欢迎的牛(tarjan缩点)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1051 题解:缩点之后判断出度为0的有几个,只有一个那么输出那个强连通块的点数,否者 ...

  6. CodeM 资格赛 B 可乐 思维

      分析: 我们假设购买一种可乐p瓶,我们可以得到期望:p*(m/n*a[i]+(n-m)/n*b[i]),由这个式子我们可以看出唯一的变量是i,所以可以遍历i找出式子的最大值 #include &l ...

  7. Django框架下的增强分页组件

    本文通过文章同步功能推送至博客园,显示排版可能会有所错误,请见谅! 描述:Django框架内置了分页功能,但其只能满足简单需求,难以实现复杂功能. 实现代码: #!/usr/bin/env pytho ...

  8. 致初学者(三): HDU 2033~ 2043题解

    下面继续给出HDU 2033~2043的AC程序,供大家参考.2033~2043这10道题就被归结为“ACM程序设计期末考试(2006/06/07) ”和“2005实验班短学期考试 ”. HDU 20 ...

  9. 列表ListView和ListActivity以及使用SimpleAdapter

    创建listview有2种方式 1>直接使用ListView进行创建 2>让Activity继承ListActivity 下面是listview常用的一些属性 案例: public cla ...

  10. Burpsuit构造测试数据

      一.使用场景 测试设备web性能优化时,需要构造或删除多个user.设备.设备账号.订单等,除了使用excel批量导入外,有些数据构造/删除使用burpsuit代理并将对应请求发送到Burp In ...