java字符串创建几个对象

java字符串创建几个对象

1. 首先了解 栈、堆、字符串常量池

2. 字符串常量池结构

在这里插入图片描述

3. 创建字符串的几种方式

    public static void t1 () {//一个字符串对象 一个char[]数组
        String str1 = "abc";
    }

    public static void t1_1 () {//一个字符串对象 一个char[]数组(编译以后就是 str1 = "abcdef")
        String str1 = "abc" + "def";
    }

    public static void t2 () {//一个字符串对象 一个char[]数组
        String str1 = "abc";
        String str2 = "abc";
    }

    public static void t2_1 () {//2个字符串对象 2个char[]数组
        String str1 = "abc";
        String str2 = "def";
    }

    public static void t3 () {//两个字符串对象 一个char[]数组
        String str1 = new String("abc");
    }

    public static void t4 () {//三个字符串对象 一个char[]数组
        String str1 = new String("abc");
        String str2 = new String("abc");
    }

    public static void t4_1 () {//4个字符串对象 2个char[]数组
        String str1 = new String("abc");
        String str2 = new String("def");
    }


    public static void t5 () {//4个字符串对象,3个char[]
        String str1 = "a" + new String("b");
    }

4. 解析证明

4.1

String str1 = "abc";

在这里插入图片描述

idea断点查看

在这里插入图片描述

放开断点对比

在这里插入图片描述

4.2

 public static void t2 () {//一个字符串对象 一个char[]数组
        String str1 = "abc";
        String str2 = "abc";
    }

在这里插入图片描述

idea调试信息

创建String对象 创建char[]数组

在这里插入图片描述

str2引用str1

在这里插入图片描述

str2引用str1 所以没用创建任何东西

在这里插入图片描述

4.3

 public static void t2_1 () {//2个字符串对象 2个char[]数组
        String str1 = "abc";
        String str2 = "def";
    }

在这里插入图片描述

4.4

  public static void t3 () {//两个字符串对象 一个char[]数组
        String str1 = new String("abc");
    }

在这里插入图片描述
在这里插入图片描述

为什么常量池的引用不和str1引用同一个呢?

但str1被回收后str1的引用对象会销毁

如果其他地方再定义 String xxx = “bac”, 则可以直接把常量池中的”abc“的引用直接返回给xxx

4.5

 public static void t4 () {//三个字符串对象 一个char[]数组
        String str1 = new String("abc");
        String str2 = new String("abc");
    }

在这里插入图片描述

4.6

 public static void t4_1 () {//4个字符串对象 2个char[]数组
        String str1 = new String("abc");
        String str2 = new String("def");
    }

4.7

public static void t5 () {//4个字符串对象,3个char[]
        String str1 = "abc" + new String("def");
    }

在这里插入图片描述

idea debug
在这里插入图片描述
其中【+4(2)】中的2入下图在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值