2022.02.04每日一考String类相关
2022.02.04每日一考
1.画出如下几行代码的内存结构:
String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
s1 += “world”;
2.如何理解String类的不可变性
String是一个final类,代表不可变的字符序列。
String的对象赋值采用的是字面量赋值的方式,存在于字符串常量池中,如果要重新赋值,是在字符串常量池中新增,原先的不变。
String的对象赋值采用的是字面量赋值的方式,存在于字符串常量池中,如果要修改,是在堆空间中new一个String对象指向字符串常量池中新的修改后的字符串,原先的不变。
String类是否可以被继承?为什么?
不能被继承,因为它是final修饰的类。
String s = new String(“hello”);在内存中创建了几个对象?请说明
两个
4. String,StringBuffer,StringBuilder三者的对比
String:不可变字符串,效率低
StringBuffer:可变字符串,线程安全,效率较低
StringBuilder:可变字符串,线程不安全,效率较高
底层结构都是char型的数组,String加了final。
5. String的常用方法有哪些?(至少7个)
length
isEmpty
charAt(int index)
String replace(char oldChar, char newChar)
String[] split(String regex, int limit)
String toLowerCase()
String toUpperCase()
String valueOf