java String intern测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java String intern测试相关的知识,希望对你有一定的参考价值。

package org.hujian.jdk.string;

import org.hujian.common.JvmTestRunner;

/**
 * Created on 2018/11/9 11:26.
 *
 */
public class TestStringIntern extends JvmTestRunner {
    /**
     * 在这里实现测试逻辑,不提供参数列表以及返回值,执行该方法应该测试到
     * 你需要实现的所有逻辑,本方法单线程执行(main)
     */
    @Override
    protected void execute() {
        //// javac在编译的时候会把字符串常量放到常量池中
        //// 所以,如果 s == s.intern() 为true则代表常量池中不存在s
        /// "==" 比较的是指针地址!!!

        String cc = new StringBuilder().append("aaa").toString();
        System.out.println(cc.intern() == cc); /// false

        String ee = new StringBuilder().append("ab").append("aa").toString();
        System.out.println(ee.intern() == ee); /// true

        String s1 = "hujian";
        String s2 = new String("hujian").intern(); /// 指向了常量池中的 "hujian"
        System.out.println(s1 == s2); /// true

        String s3 = "test";
        String s4 = new String("test");
        System.out.println(s3 == s4); /// false,两个对象
    }

    public static void main(String[] args) {
        new TestStringIntern().execute();
    }
}

以上是关于java String intern测试的主要内容,如果未能解决你的问题,请参考以下文章

几张图轻松理解String.intern()

String.intern()字符串常量池

几张图轻松理解String.intern()

几张图轻松理解String.intern()

String==相关

java String中的intern()