MST

星途 面试题库

面试题:Java String性能优化之intern方法应用

请解释Java中String的intern方法的作用和原理。假设你有一个包含大量重复字符串的应用场景,如何利用intern方法来优化内存使用并提升性能?请结合实际代码示例说明。
16.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

1. String的intern方法的作用

intern方法的作用是将字符串对象添加到字符串常量池中,并返回常量池中该字符串的引用。如果常量池中已经存在该字符串,则直接返回常量池中的引用,而不是创建一个新的字符串对象。

2. intern方法的原理

Java中有一个字符串常量池,用于存储程序中出现的字面量字符串。当调用intern方法时,会检查字符串常量池中是否已经存在与调用该方法的字符串内容相同的字符串。如果存在,则返回常量池中的引用;如果不存在,则将该字符串添加到常量池中,并返回新添加的引用。

3. 利用intern方法优化内存使用并提升性能的场景及代码示例

假设我们有一个包含大量重复字符串的应用场景,例如处理日志文件,日志中可能有很多重复的日志级别(如"INFO"、"WARN"、"ERROR"等)。可以利用intern方法来减少内存占用,因为相同内容的字符串在常量池中只会存储一份。

import java.util.ArrayList;
import java.util.List;

public class StringInternExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        // 模拟大量重复字符串
        for (int i = 0; i < 1000000; i++) {
            list.add("INFO".intern());
        }
    }
}

在上述代码中,通过调用"INFO".intern(),对于每次添加到List中的"INFO"字符串,实际上都是常量池中同一个"INFO"字符串的引用,而不是创建100万个相同内容的字符串对象,从而减少了内存占用,提升了性能。特别是在处理大量重复字符串的场景下,这种优化效果更为显著。