jdk7 intern说明

public class RuntimeConstantString {
	/**
	 *  Java 1.7及以上版本 intern使用
	 *   (1) str=new String("1")不拼接  或者 String str="1" (非new拼接不影响),最终会在字符串常量池存这些字符串的值,所以无论str.inter()
	 *      还是str都是真实的在字符串常量中的值,故相同
	 *   (2) 拼接str=new String("1")+new String("2") ,最终会在字符串常量池存这些字符串的地址,所以无论str.inter()
	 *      还是str都是真实的在字符串常量中的地址值,故相同
	 *   (3) 默认的常驻字符串值(如java,double这些java的关键词)或者是之前自定义过的被字符串常量池新纳入的值(如例子中 计算机软件123)
	 *       str.inter()返回的是真实的值,另外一个是地址,所以不相同
	 * */
	public static void main(String[] args) {
		String str1=new StringBuilder("计算机").append("软件").toString();
		System.out.println(str1.intern()==str1); //true
		
		String str2=new StringBuilder("ja").append("va").toString();
		System.out.println(str2.intern()==str2); //false
		
		String str22=new StringBuilder("ja")+new String("va");
		System.out.println(str22.intern()==str22); //false
		
		String str23=new String("a")+new String("a");
		System.out.println(str23==str23.intern()); //true
		
		String str24=new String("1")+new String("2");
		System.out.println(str24.intern()==str24); //true
		
		String str25=new String("dou")+new String("bl")+new String("e");
		System.out.println(str25.intern()==str25); //false
		
		String str3=new String("计算机软件").toString();
		System.out.println(str3.intern()==str3); //false
		
		String str4="计算机软件"+"123";
		System.out.println(str4.intern()==str4); //true
		
		String str5="计算机软件"+new String("123");
		System.out.println(str5.intern()==str5); //false
		
		String str6="计算机软件"+new String("12");
		System.out.println(str6.intern()==str6); //true
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值