美文网首页
Java intern() 方法

Java intern() 方法

作者: 明月几何8 | 来源:发表于2021-08-03 10:40 被阅读0次

intern() 方法返回字符串对象的规范化表示形式。

它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。

语法

public String intern()

参数

返回值
一个字符串,内容与此字符串相同,但一定取自具有唯一字符串的池。

实例

public class Test {
    public static void main(String args[]) {
        String Str1 = new String("www.runoob.com");
        String Str2 = new String("WWW.RUNOOB.COM");

        System.out.print("规范表示:" );
        System.out.println(Str1.intern());

        System.out.print("规范表示:" );
        System.out.println(Str2.intern());
    }
}

以上程序执行结果为:

规范表示:www.runoob.com
规范表示:WWW.RUNOOB.COM

尽管在输出中调用intern方法并没有什么效果,但是实际上后台这个方法会做一系列的动作和操作。在调用”ab”.intern()方法的时候会返回”ab”,但是这个方法会首先检查字符串池中是否有”ab”这个字符串,如果存在则返回这个字符串的引用,否则就将这个字符串添加到字符串池中,然会返回这个字符串的引用。

业务场景:当我们使用java中的synchronized关键字进行并发处理的时候,我们用字符串当锁,例如

public void test(String str) {
    synchronized (str) {
          ...
    }
}

当出现并发访问时,这里的同步代码块并不能解决并发问题,因为不同请求获取到的字符串对象是不一样的,怎么解决呢?

public void test(String str) {
    synchronized (str.intern()) {
          ...
    }
}

intern()方法会先检查字符串池中是否存在这个字符串,如果有返回该字符串引用地址,没有则添加到字符串池然后返回引用地址。这样获取到的锁对象就是同一个对象。

相关文章

  • Java intern()用法

    转自:Java intern() 方法 尽管在输出中调用intern方法并没有什么效果,但是实际上后台这个方法会做...

  • 在Java中什么时候使用String.intern()方法?

    当中的String.intern()方法可以用来处理在Java中字符串的重复问题。通过使用intern()方法,可...

  • Java intern方法

    1、String s1=s.intern(); 2、代码示例

  • Java intern() 方法

    intern() 方法返回字符串对象的规范化表示形式。 它遵循以下规则:对于任意两个字符串 s 和 t,当且仅当 ...

  • Java String.inern()

    在java1.7以后,调用intern()方法不再在常量池中寻找相等常量,若寻找不到则创建。 intern()会在...

  • 关于intern()

    开始介绍 intern()方法前,先看一个简单的 Java程序吧! publicclassIntern{ ...

  • Java 实例 - 字符串优化

    Java 实例 - 字符串优化 Java 实例以下实例演示了通过 String.intern() 方法来优化字符串...

  • String源码中的intern()方法使用分析

    intern()该方法的注释是 When the intern method is invoked, if the...

  • 揭开 String.intern() 那神秘的面纱

    缘起 开始介绍 intern()方法前,先看一个简单的 Java程序吧!下面是一段 Java代码,代码内容比较简单...

  • java String的intern方法

    我们知道再jvm的运行时内存可以分为堆、方法区、程序计数器、虚拟机栈和本地方法栈。而在方法区中有一个字符串常量池,...

网友评论

      本文标题:Java intern() 方法

      本文链接:https://www.haomeiwen.com/subject/dnnsvltx.html