听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!
1 String 对象的两种创建方式: ![]() 这两种不同的创建方法是有差别的,第一种方式是在常量池中拿对象,第二种方式是直接在堆内存空间创建一个新的对象。 记住:只要使用new方法,便需要创建新的对象。 2 String 类型的常量池比较特殊。它的主要使用方法有两种:
![]() 字符串拼接 尽量避免多个字符串拼接,因为这样会重新创建对象。如果需要改变字符串的话,可以使用 StringBuilder 或者 StringBuffer。 这句话创建了几个对象? 创建了两个对象。 验证: ![]() 结果: ![]() 解释: 先有字符串"abc"放入常量池,然后 new 了一份字符串"abc"放入Java堆(字符串常量"abc"在编译期就已经确定放入常量池,而 Java 堆上的"abc"是在运行期初始化阶段才确定),然后 Java 栈的 str1 指向Java堆上的"abc"。 8种基本类型的包装类和常量池
Integer 缓存源代码: 应用场景:
![]() Integer比较更丰富的一个例子: (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |