Java中intern()方法的使用

String类中定义了intern()方法,该方法的用途是为每一个字符序列生成一个且仅生成一个String的引用,下面用实例来进行说明:
首先了解Java中String的内存分配。
1、直接赋值方式

String a = "123";
String b = "123";
System.out.println(a == b);

执行结果为true,可知,这种方式定义的String类型,字符串的内容”abc”存在于常量池中,且多个引用共享。
2、new方式

String aa = new String("123");
String bb = new String("123");
System.out.println(aa == bb);

执行结果为false,可知,通过new生成的对象放于堆区,双等号进行比较时,比较的是对象,虽然内容相等,但是对象不是同一个,因此打印结果为false。使用equals方法进行比较内容。
3、intern()
当调用intern方法时,不管使用什么方式定义一个字符串,都会首先在常量池中查找是否有相应的字符串存在,如果有,直接返回引用,否则,在常量池中生成相应的字符串并返回引用。例子如下:

String c = "c";
String cc = new String("c");
System.out.println(c == cc);

String d = "d";
String dd = new String("d").intern();
System.out.println(d == dd);

输出结果为false和true,前一个结果比较好理解,第二个结果为true,说明调用intern后,d和dd指向的为同一对象,均为常量池中的”d”;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值