常量池与字符串

package JavaCloumn;

public class TestString {

    public static void main(String[] args) {
        String s1 = "100";
        String s2 = "100";
        System.out.println(s1 == s2);  // true
        /*
         * "str" 这种形式的字符串,是放在常量池中的, 执行 s1 = "100"
         * 时,会先看常量池中是否存在该字符,如果存在就直接引用,所以
         * s1, s2 应用的其实是同一个对象。
         * 所以返回 true
         */
        
        String s3 = new String("100");
        String s4 = new String("100");
        System.out.println(s3 == s4);  // false
        /*
         * 通过 new String("str") 值在堆内存中开辟一块新内存的,每个通过 new
         * 创建的对象,都有自己的内存空间
         * 所以:s3 与 s4 不是同一个对象, 返回 false
         */
    }
}

要点:###

  1. 每个通过 new 创建的对象,都已自己独有的堆空间。
  2. "str" 像这样创建的字符串对象,存在于常量池中,创建时会先查找常量池中是否存在,如果存在就直接引用已存在的对象。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容