String创建方式及其区别(快速了解)

让我们来看两种赋值方式:
第一种:直接赋值

String name1 = "Tom";
String name2 = "Tom";
System.out.println(name1 == name2);//用来判断name1和name2的地址是否相同,相同为true,不同为false
//此时打印的结果就是:true

之所以会出现这种结果就是:
– 当代码执行到第一行时,会在Java内存区中的常量池里开辟一个空间来存储“Tom”,并有一个地址(假如是0x123),将该地址存储到“”里面;
– 当执行到第二行时,会首先在常量池中查找是否有一个“Tom"的字符串,当发现有一个时,就会直接将该字符串(即原有的“Tom”)的地址存储到“”中的name2里面;若发现没有,则在常量池中新创建一个空间并将空间地址传给变量。这种赋值方法称为直接赋值

让我们用一个图来形象的表示一下:
在这里插入图片描述
第二种:创建对象赋值

String name3 = new String("Lucy");
String name4 = new String("Lucy");
System.out.println(name1 == name2);
//此时打印的结果就是:false

因为通过上面这种方法来赋值,则每创建一个对象,都会在“堆”中创建一个新的空间,并将地址赋值给变量

发布了34 篇原创文章 · 获赞 8 · 访问量 710

猜你喜欢

转载自blog.csdn.net/weixin_45720626/article/details/104851168