常量池与堆中放入String数据,比较大小
发布日期:2021-10-12 20:08:25 浏览次数:4 分类:技术文章

本文共 1147 字,大约阅读时间需要 3 分钟。

面试题1

1.1代码

package Test;/* * zt * 2020/7/30 * 9:37 *  面试题 false true */public class Demo1 {    public static void main(String[] args) {        //常量池        String s1 = "abc";        //常量池        String s2 = "xyz";        //程序运行,不会放到常量池,放入堆        String s3 = s1+s2;        //常量池        String s4 = "abc" + "xyz";        //常量池        String s5 = "abcxyz";        System.out.println(s3==s4);        System.out.println(s4==s5);    }}

1.2运行结果

false  true

1.3.图解

1.3.1运行文件

在这里插入图片描述

1.3.2存储位置图解

在这里插入图片描述

2.面试题2

2.1代码

package Test;/* * zt * 2020/7/30 * 9:37 *  面试题 false true */public class Demo1 {    public static void main(String[] args) {        //常量池        String s1 = "abc";        //常量池        String s2 = "xyz";        //程序运行,不会放到常量池,放入堆        String s3 = s1+s2;        //常量池//        String s4 = "abc" + "xyz";//        intern();重用,如果常量池没有将对象复制一份(或者引用)//        如果常量池存在,直接返回//        JDK1.7之前是复制一份放入常量池,之后(包括JDK1.7)把对象引用赋值到常量池        String s4 = s3.intern();        //常量池        String s5 = "abcxyz";        System.out.println(s3==s4);        System.out.println(s4==s5);    }}

2.2运行结果

truetrue

2.2.1图解

在这里插入图片描述

3.特殊

java 还有一些…在常量池本来就有,所以不需要intern()再复制地址过来。

在这里插入图片描述

所以运行结果:
false

转载地址:https://blog.csdn.net/qq_39773004/article/details/107682369 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:如果try{}里面有一个return语句,那么紧跟着这个try后的finally{}里面的代码会不会执行?
下一篇:interface概念与代码示例,常量接口和标记接口,与abstract的区别

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月09日 06时48分33秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章