String的 intern关键字

 

 

 

 

注解  : 

String a =  new String("1");   a形参出现在栈上 , 同时堆上会出现一个a的地址值, 关键 1这个常量已经出现在常量池内了. 所以 a = a.intern()  ; 无论用不用a来接收这个方法的返回值, a都指向常量池内的 1.

String b =  a  + a ;  b形参出现在栈上 , 同时堆上会出现一个b的地址值, 但是 11 这个常量字符串还未存在在常量池内,这个时候 b.intern()  , 这个时候常量11 , 指向的是 堆上b的地址值,   就算这时候 String c = "11"; 指向的也是对上b对象的地址值,不会有有个 "11" 这样的串单独存在于常量池上了.

 

posted @ 2020-06-10 18:30  java_小跟班  阅读(263)  评论(0编辑  收藏  举报