String类中常见面试题

++1.string类属于基本类型吗?++

string类不是基本类型;它属于引用数据类型

++2.操作字符串的类有哪些?有什么区别?++

有三种:string,stringBuilder,stringBuffer

区别:

String:不可变类,字符串一旦被创建就不能被修改,只能被覆盖

stringBuiler:可变类;非线程安全

stringBuffer:可变类;线程安全

++3.string中常用的api有哪些?++

1. **length():** 返回字符串的长度。

String str = "Hello, World!";

int length = str.length(); // length = 13

2. **charAt(int index):** 返回指定索引处的字符。

String str = "Hello";

char ch = str.charAt(0); // ch = 'H'

3. **substring(int beginIndex) 和 substring(int beginIndex, int endIndex):** 返回从指定索引开始到结束的子字符串。

String str = "Hello, World!";

String substr1 = str.substring(7); // substr1 = "World!"

String substr2 = str.substring(0, 5); // substr2 = "Hello"

4. **indexOf(String str) 和 lastIndexOf(String str):** 返回指定子字符串第一次出现的索引或最后一次出现的索引。

String str = "Hello, World!";

int index1 = str.indexOf("o"); // index1 = 4

int index2 = str.lastIndexOf("o"); // index2 = 8

5. **toUpperCase() 和 toLowerCase():** 将字符串转换为大写或小写。

String str = "Hello, World!";

String upperCase = str.toUpperCase(); // upperCase = "HELLO, WORLD!"

String lowerCase = str.toLowerCase(); // lowerCase = "hello, world!"

6. **replace(char oldChar, char newChar) 和 replace(CharSequence target, CharSequence replacement):** 替换字符或字符串。

String str = "Hello, World!";

String replaced1 = str.replace('o', 'x'); // replaced1 = "Hellx, Wxrld!"

String replaced2 = str.replace("World", "Java"); // replaced2 = "Hello, Java!"

7. **startsWith(String prefix) 和 endsWith(String suffix):** 检查字符串是否以指定的前缀或后缀开始或结束。

String str = "Hello, World!";

boolean startsWith = str.startsWith("Hello"); // startsWith = true

boolean endsWith = str.endsWith("World!"); // endsWith = true

8. **split(String regex):** 根据给定的正则表达式拆分字符串。

String str = "apple,banana,orange"; String[] fruits = str.split(","); // fruits = ["apple", "banana", "orange"

9.trim()方法:用于去除字符串的空格

10. 比如说 valueOf() 用于将其他类型的数据转换为字符串。

复制代码
String s = String.valueOf(133);

11.toCharArray():将字符串转换为对应的字符数组;

++4.string对象是不可变的吗?为什么?有什么优点?++

结合源码分析:

String类被final修饰:该类不能被继承,就是不能自定义String的子类;

成员变量value被final修饰:字符串就是以字符的形式存储在这个数组中该变量一旦被赋值后就不能指向其他的对象;但是对象的内容可变;

还有就是:String这个类没有对外提供对应的修改其属性value的方法;

优点:

-----安全可靠:字符串使用的还是相当频繁的;特别是存储一些用户的密码等敏感信息;不可变保证其校验通过后就不能在程序中修改后;

-----线程安全:不存在并发修改同一个对象的问题;

2.提高性能:

-----因为字符串的不可变性,计算出字符串的哈希值后,就可以把它缓存起来后续继续使用

-----字符串常量池的应用:定义一个字符串后就会被放在常量池中,可以方便复用;

++5.string怎么转list?list怎么转string?++

++将String转为list;++

java 复制代码
public class Main {
        public static void main(String[] args) {
            String str = "Hello World";
            // 创建一个空列表
            List<Character> charList = new ArrayList<>();
            // 将字符串转换为列表
            for (char c : str.toCharArray()) {
                charList.add(c);
            }
            System.out.println("List from String: " + charList);
    }
    }

将list转为String:

java 复制代码
public class Main {
        public static void main(String[] args) {

                List<Character> charList = List.of('H', 'e', 'l', 'l', 'o');
                // 使用StringBuilder将字符列表转换为字符串
                StringBuilder sb = new StringBuilder();
                for (char c : charList) {
                    sb.append(c);
                }
                String str = sb.toString();

                System.out.println("String from List: " + str);
            }
    }
相关推荐
桦说编程6 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen6 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研6 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员6 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋7 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国7 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~7 小时前
《设计模式》装饰模式
java·设计模式
A尘埃7 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交8 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_028 小时前
【Java基础面试题】Java基础概念
java·开发语言