码迷,mamicode.com
首页 > 其他好文 > 详细

jdk1.6与jdk1.8中String的intern()方法区别

时间:2020-02-17 14:11:17      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:的区别   没有   创建   col   new   拷贝   int   intern方法   判断   

我们用如下代码来证明两个版本intern方法的区别。

jdk1.6

String ab = new String("a") + new String("b");  //在堆中创建"a","b","ab";

String ab2 = ab.intern();//先判断常量池中是否有"ab",如果有直接返回常量池中的地址,如果没有则拷贝一份ab对象放入常量池

String ab3 = "ab";//因为常量池中有"ab",此时直接返回常量池中地址。

System.out.println( ab2 == ab3 );//true        

System.out.println( ab == ab3 );//false       此时ab还是返回堆中的地址

 

jdk1.8

String ab = new String("a") + new String("b");  //在堆中创建"a","b","ab";

String ab2 = ab.intern();//先判断常量池中是否有"ab",如果有直接返回常量池中的地址,如果没有则将该对象放入常量池中

String ab3 = "ab";//因为常量池中有"ab",此时直接返回常量池中地址。

System.out.println( ab2 == ab3 );//true        

System.out.println( ab == ab3 );//true       此时ab已经被放入常量池中,所以地址相同

 

jdk1.6与jdk1.8中String的intern()方法区别

标签:的区别   没有   创建   col   new   拷贝   int   intern方法   判断   

原文地址:https://www.cnblogs.com/pastjx/p/12321431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!