彻底理解String与new String()区别

想理解这两个的区别,需要了解常量池机制:
String str=“ab” :
不需要new 就可以产生对象的,它创建对象时,首先在常量池中找有没有值为"ab"的对象,如果有,就直接把引用(意思就是str)指向该值,不需要重新new一个对象;如果没有,就在常量池中new一个值为"ab"的对象

String str=new String(“ab”):
和普通对象一样,每次new,都会在堆中重新创建一个值为"ab"的对象,不管堆中有没有值为"ab"的对象
例子:
比较String时:"=="比较的是内存地址,"equals"比较的是内容
在这里插入图片描述

如果想彻底理解"=="与"equals"的区别,可以看一下这个博客:https://blog.csdn.net/qq_41936224/article/details/106421301

猜你喜欢

转载自blog.csdn.net/qq_41936224/article/details/106428811