1 package com.cn.donleo.test;
2
3 /**
4 * @author liangd
5 * date 2020-10-23 16:07
6 * code String创建了几个对象
7 */
8 public class TestString {
9 public static void main(String[] args){
10
11 //这里输出为true,说明两个字符串文字保存为一个对象。就是说,代码只在pool中创建了一个String对象。
12 String str1="ab";
13 String str2="ab";
14 System.out.println(str1==str2);
15
16 /*
17 1、String s , 这个语句声明一个类String的引用变量 s [我们常常称之为句柄],而对象一般通过new创建。
18 所以题目中s仅仅是一个引用变量,它不是对象。
19 2、new String(), 这里是通过new创建了一个String对象,放在heap(堆)中
20 3、而“abc”呢,也是一个对象,不同的是放在pool(文字池)
21 */
22
23 String s = new String("abc");
24
25 /*
26 创建了几个对象?
27 答:四个对象
28 1、"aaa"一个对象
29 2、 new Sring()一个对象
30 3、"bbb"一个对象
31 4、“aaa” + new String()一个对象
32 ps:前提是pool都没有这四个字符串
33 */
34 String s1="aaa"+new String("bbb");
35
36 }
37 }