12
回答
Java 中的 Flyweight模式
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   

 

public class Main { 
    public static void main(String[] args) { 
        String str1 = "fly"; 
        String str2 = "weight"; 
        String str3 = "flyweight"; 
        String str4; 

        str4 = str1 + str2; 
        System.out.println(str3 == str4); 

        str4 = (str1 + str2).intern(); 
        System.out.println(str3 == str4); 
    } 
}

两次的输出会是什么?

 

举报
曾赛
发帖于8年前 12回/1K+阅
共有12个答案 最后回答: 2年前

这个程序和Java的实现有关,也与Flyweight模式相关,所以有点剑走偏锋的感觉哈,不过这也正是它的有趣之处,今天看到,觉得甚或是可爱,遂分享之!

不过还是要恭喜红薯,你猜对了(),呵呵

4. String.intern():

再补充介绍一点:存在于.class文件中的常量池,在运行期被JVM装载,并且可以扩充。String的intern()方法就是扩充常量池的一个 方法;当一个String实例str调用intern()方法时,Java查找常量池中是否有相同Unicode的字符串常量,如果有,则返回其的引用, 如果没有,则在常量池中增加一个Unicode等于str的字符串并返回它的引用

呵呵,明白了

顶部