加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

听说又被 JVM 内存区域方面的面试题给虐了?看看这篇文章吧!

发布时间:2019-04-01 06:06:50 所属栏目:站长百科 来源:Java填坑之路
导读:根基题目 先容下 Java 内存地区(运行时数据区) Java 工具的建设进程(五步,提议能默写出来而且要知道每一步假造机做了什么)工具的会见定位的两种方法(句柄和直接指针两种方法) 拓展题目 String类和常量池8种根基范例的包装类和常量池 一 概述 对付 Java 程

1 String 工具的两种建设方法:

传闻又被 JVM 内存地区方面的口试题给虐了?看看这篇文章吧!

这两种差异的建设要领是有不同的,第一种方法是在常量池中拿工具,第二种方法是直接在堆内存空间建设一个新的工具。

记着:只要行使new要领,便必要建设新的工具。

2 String 范例的常量池较量非凡。它的首要行使要领有两种:

  • 直接行使双引号声明出来的 String 工具会直接存储在常量池中。•假如不是用双引号声明的 String 工具,可以行使 String 提供的 intern 要领。String.intern() 是一个 Native 要领,它的浸染是:假如运行时常量池中已经包括一个便是此 String 工具内容的字符串,则返回常量池中该字符串的引用;假如没有,则在常量池中建设与此 String 内容沟通的字符串,并返回常量池中建设的字符串的引用。

传闻又被 JVM 内存地区方面的口试题给虐了?看看这篇文章吧!

字符串拼接

只管停止多个字符串拼接,由于这样会从头建设工具。假如必要改变字符串的话,可以行使 StringBuilder 可能 StringBuffer。

这句话建设了几个工具?

建设了两个工具。

验证:

传闻又被 JVM 内存地区方面的口试题给虐了?看看这篇文章吧!

功效:

传闻又被 JVM 内存地区方面的口试题给虐了?看看这篇文章吧!

表明:

先有字符串"abc"放入常量池,然后 new 了一份字符串"abc"放入Java堆(字符串常量"abc"在编译期就已经确定放入常量池,而 Java 堆上的"abc"是在运行期初始化阶段才确定),然后 Java 栈的 str1 指向Java堆上的"abc"。

8种根基范例的包装类和常量池

  • Java 根基范例的包装类的大部门都实现了常量池技能,即Byte,Short,Integer,Long,Character,Boolean;这5种包装类默认建设了数值[-128,127]的响应范例的缓存数据,可是超出此范畴如故会去建设新的工具。•两种浮点数范例的包装类 Float,Double 并没有实现常量池技能。

Integer 缓存源代码:

应用场景:

  • Integer i1=40;Java 在编译的时辰会直接将代码封装成Integer i1=Integer.valueOf(40);,从而行使常量池中的工具。
  • Integer i1 = new Integer(40);这种环境下会建设新的工具。

传闻又被 JVM 内存地区方面的口试题给虐了?看看这篇文章吧!

Integer较量更富厚的一个例子:

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读