String数据类型

String首先它不是一个基本数据类型,而是一个引用类型,且是不可变的。

那么问题来了,为什么我们在使用String类型的时候,String s1="abc" 和new String("abc")有什么区别呢?

1.第一种在创建字符串的时候,如果在常量池里面存在“abc”的话,则s会直接指向“abc”。如果“abc”不存在,那么会直接在常量池中创建一个对象、

2.第二种的话,会在堆中创建出 new String(s2)对象,然后再常量池里寻找是否有“abc”,若有的话,s2就是常量池“abc”的内存地址。如果没有,则会在常量池里创建“abc”,并且s2

指向这个“abc”。

再说String引用数据类型的不可变,在这里就是里面的内容不变,而地址是会变的

 

posted @ 2022-08-21 19:22  ikun、  阅读(148)  评论(0编辑  收藏  举报