面试官觉得你基本功扎实

课代表总结了String的信息👍👍👍
视频内容:
1️⃣String是基本数据类型吗?✍️
2️⃣String可以被继承吗?是可变的吗?📄
3️⃣String str=""与String str=new String(""i"")—样吗?🏷️
4️⃣String str = new String("abc");创建了几个对象?📑
5️⃣String和byte[]两者之间如何转换?🔖
视频内容:
1️⃣String是基本数据类型吗?✍️
String不是基本数据类型,基本类型有8种有int、float、long.double等,而String属于对象

2️⃣String可以被继承吗?是可变的吗?📄
String是final类型的不可基层,也可变,
不可变体现在,例如:String s= "Hello" s += " world!"; s的指向的内存起始地址已经改变
而自己声明一个user对象,包含name,age属性,name和age的值改变了,但是声明的user引I用执行的其实地址是不变的,而String类型的引用执行的起始地址会变化。那么这就是到导致,只要值改变了,String就是新的对象,造成很大的内存开销,所以就有了StringBuffer和StringBuild
StringBuffer和StringBuilder最大的区别在于,StringBuffer是线程安全的,而StringBuilder是非线程安全的,但StringBuilder的性能却高于StringBuffer,所以在单线程环境下推荐使用StringBuilder,多线程环境下推荐使用StringBuffer。

3️⃣String str=""与String str=new String(""i"")—样吗?🏷️
不一样,因为内存的分配方式不一样。String str="i"的方式,Java虚拟机会将其分配到常量池中;而String str=new String("i"")则会被分到堆内存中。

4️⃣String str = new String("abc");创建了几个对象?📑
创建了两个,"abc"本身创建在常量池,通过new又创建在堆中

5️⃣String和byte[]两者之间如何转换?🔖
String->byte[]通过String类的getBytes方法; byte[l]->String通过new String(byte[])构造器
