美文网首页Java基础
Java intern()用法

Java intern()用法

作者: 小胖学编程 | 来源:发表于2019-12-17 10:21 被阅读0次

转自:Java intern() 方法

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

public class TestStr {
    public static void main(String[] args) {
        String str1 = "a";
        String str2 = "b";
        String str3 = "ab";
        String str4 = str1 + str2;
        String str5 = new String("ab");
        String str6 = "a" + "b";
        System.out.println(str3 == str6);  //true  静态字符串相加的结果会加入到字符串常量池中。
        System.out.println(str3 == str4);  //false  字符串相加,且含有变量,不会加入到常量池中。
        System.out.println(str5.equals(str3));  //true
        System.out.println(str5 == str3);   //false
        System.out.println(str5.intern() == str3); //true
        System.out.println(str5.intern() == str4);  //false
    }
}
  • 采用new创建出来的字符串不会进入字符串常量池
  • 字符串相加时,都是静态字符串的结果会添加到字符串池,如果其中含有变量则不会加入到字符串池中。
  • str5调用intern的时候,会检查字符串常量池中是否含有该字段,由于之前定义的str3已经进入到该常量池汇总,所以str5str3会得到相同的引用。

总结:intern()方法就是返回调用者常量池中的引用。

相关文章

  • Java intern()用法

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

  • String.intern in Java 6, 7 and 8

    转载 http://java-performance.info/string-intern-in-java-6-7...

  • java intern

    JDK7 中将StringPool从永久代移动到了老生代,并且可以通过-XX:StringTableSize=99...

  • Java String.inern()

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

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

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

  • PreferredAPN

    插卡后调用frameworks/opt/telephony/src/java/com/android/intern...

  • Java intern方法

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

  • Java intern() 方法

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

  • String源码阅读

    String源码阅读 wiki 通过反编译深入理解Java String及intern 成神之路-基础篇 Java...

  • KOTLIN中的String.intern()与JAVA中的St

    layout: post title: KOTLIN中的String.intern()与JAVA中的String....

网友评论

    本文标题:Java intern()用法

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