码迷,mamicode.com
首页 > 编程语言 > 详细

java基础知识回顾之---java String final类之intern方法

时间:2014-07-27 23:07:19      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   div   ar   log   字符串   

public class StringObjectDemo {


    /**
     * @param args
     */
    public static void main(String[] args) {
        String hello = "Hello", lo = "lo";
        System.out.print((hello == "Hello") + " ");//true
        System.out.print((Other.hello == hello) + " ");//true
        System.out.print((hello == ("Hel"+"lo")) + " ");//true
        System.out.print((hello == ("Hel"+lo)) + " ");//常量+变量 != 常量 false
        System.out.println(hello == ("Hel"+lo).intern());//true
        
        internMethod();
    }
    /**
     * intern()用于操作维护常量池
     * 一个初始时为空的字符串池,它由类 String 私有地维护当调用 intern 方法时,
     * 如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,
     * 将此 String 对象添加到池中,并且返回此 String 对象的引用。
           它遵循对于任何两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。 
     */
    public static void internMethod(){

        String str1 = "a";    
        String str2 = "bc";    
        String str3 = "a"+"bc";//等同于"abc",常量+常量=常量,存入常量池中 
        String str4 = str1+str2;//变量+变量 != 常量则不会存放在常量池中
        System.out.println(str3==str4);//false  
        str4 = (str1+str2).intern();//将  "abc"添加到常量池中,并且返回对象的引用str4
        System.out.println(str3==str4);//true
    }
}
class Other {
            static String hello = "Hello"; 
    }

 

java基础知识回顾之---java String final类之intern方法,布布扣,bubuko.com

java基础知识回顾之---java String final类之intern方法

标签:style   blog   java   color   div   ar   log   字符串   

原文地址:http://www.cnblogs.com/200911/p/3871788.html

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