深入理解Java中的String

Posted xianya

tags:

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

一、String在内存中的结构

技术分享图片

    注意:String类声明的变量名放在栈中,New出来的对象放在堆中,String具体常量类容放在常量池

二、String是不可变对象

      java.lang.String类使用了final修饰,不能被继承。String是常量,其对象一旦构造就不能再被改变

package com.yyx.pratice;

public class TestString {
    public static void main(String[] args) {
        String str1 = "Hello World";
        System.out.println(str1);
        String str2 = upcase(str1);
        System.out.println(str2);
        System.out.println(str1);
    }

    public static String upcase(String s) {
        return s.toUpperCase();
    }
}

三、创建对象个数

     1.String a = new String("1"+"2")共建了几个对象?

创建了2个对象,由于编译器会把等号右边的进行合并,所以他在常量区会建立一个 "12’的字符串,然后,在堆上创建一个对象叫a

     2.String str=new String("abc")共建了几个对象?

创建了2个对象

以上是关于深入理解Java中的String的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Java中的String

深入理解Java中的String

读深入理解Java中的String(包括JVM)一文总结和提升

JDK学习---深入理解java中的String

深入理解java.lang.String

如何理解这段代码片段中的两对括号?