Java-String类的intern()方法

104 篇文章 0 订阅

String类的intern()方法

intern()方法

介绍

String类中定义了intern()方法,该方法的用途是为每一个字符序列生成一个且仅生成一个String的引用。intern()方法设计的初衷,就是重用String对象,以节省内存消耗。

作用

intern()方法的作用在jdk1.7之后是查看常量池中是否存在和调用方法的字符串内容一样的字符串,如果有的话,就返回该常量池中的字符串,若没有的话,就在常量池中写入一个堆中该字符串对象的一个引用,指向堆中的该对象,并返回该引用。

举例

案例1

	static void AAA() {
		String a = new String("abc");
		String b = new String("abc");
		System.out.println("a.intern() == b.intern() " + (a.intern() == b.intern()));// true
		System.out.println("a.intern() == b " + (a.intern() == b));// false
		System.out.println("a.intern() == a " + (a.intern() == a));// false
		System.out.println("a == b " + (a == b));// false
	}

运行结果
在这里插入图片描述
分析
a对象创建是是会创建两个对象一个是堆中string对象,另一个是常量池中abc对象,而b对象创建时只是创建堆中string对象,并且a与b不是同一个对象。
案例2

static void AAA() {
		String a = new String("abc");
		String b = new String("abc");
		System.out.println("a.intern() == b.intern() " + (a.intern() == b.intern()));// true
		System.out.println("a.intern() == b " + (a.intern() == b));// false
		System.out.println("a.intern() == a " + (a.intern() == a));// false
		System.out.println("a == b " + (a == b));// false
		System.out.println("=============================================");
		String str1 = "abc";
		System.out.println("a.intern() == str1 " + (a.intern() == str1));// true
		System.out.println("b.intern() == str1 " + (b.intern() == str1));// true
		System.out.println("a == str1 " + (a == str1));// false
		System.out.println("str1 == abc " + (str1 == "abc"));// true
	}

运行结果
在这里插入图片描述

分析
新声明的对象所获得值时来自于常量池

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值