听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!
发布时间:2019-03-28 23:12:03 所属栏目:空间 来源:Java填坑之路
导读:基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String类和常量池8种基本类型的包装类和常量池 一 概述 对于 Java 程
1 String 对象的两种创建方式: ![]() 这两种不同的创建方法是有差别的,第一种方式是在常量池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象。 记住:只要使用new方法,便需要创建新的对象。 2 String 类型的常量池比较特殊。它的主要使用方法有两种:
![]() 字符串拼接 尽量避免多个字符串拼接,因为这样会重新创建对象。如果需要改变字符串的话,可以使用 StringBuilder 或者 StringBuffer。 这句话创建了几个对象? 创建了两个对象。 验证: ![]() 结果: ![]() 解释: 先有字符串"abc"放入常量池,然后 new 了一份字符串"abc"放入Java堆(字符串常量"abc"在编译期就已经确定放入常量池,而 Java 堆上的"abc"是在运行期初始化阶段才确定),然后 Java 栈的 str1 指向Java堆上的"abc"。 8种基本类型的包装类和常量池
Integer 缓存源代码: 应用场景:
![]() Integer比较更丰富的一个例子: (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |