标签:Java,常量池
Java 常量池的实例详解
Java的常量池中包含了类、接口、方法、字符串等一系列常量值。常量池在编译期间就已经确定,并保存在*.class文件中
一、对于相同的常量值,常量池中只保存一份拷贝。
而且,当一个字符串由多个字符串常量链接而成时,多个字符串被组成一个字符串常量。
例如:
package lxg;
public class main {
public static void main(String[] args) {
String name = "lengxuegang";
String nickname = "lengxuegang";
String signature = "leng" + "xue" + "gang";
System.out.println(name == nickname);
System.out.println(name == signature);
}
}
结果为:
true
true
注意:由new String()创建的字符串不是常量,不能在编译期间确定。因此也就不能放入常量池中,而是有自己的地址空间。
二、常量池在运行期间由JVM装载,并且可以扩充。
String.intern()方法就是扩充常量池的一个方法。当String的一个对象str调用intern()方法时,Java首先检索常量池中是否有相同Unicode编码的字符串常量。如果有,则返回该字符串常量的引用;如果没有,则在常量池中增加一个Unicode编码等于str的字符串常量,同时返回该字符串常量的引用。
例如:
package lxg;
public class main {
public static void main(String[] args) {
String name = "lengxuegang";
String nickname = new String("lengxuegang");
System.out.println(name == nickname);
//调用intern方法后,nickname指向常量池中"lengxuegang"的引用,此时name与nickname相同
nickname = nickname.intern();
System.out.println(name == nickname);
}
}
输出结果为:
false
true
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/lxgwm2008/article/details/7700949


猜你喜欢
- 我们在开发Java项目的时候,经常需要对参数进行一些必填项、格式、长度等进行校验,如果手写代码对参数校验,每个接口会需要很多低级的代码,这样
- Lambda用到了JDK8自带的一个函数式接口Comparator<T>。准备一个Apple类public class Appl
- 一、银行存取款1.前言毕竟谁不喜欢钱呢!(不是😅)我看谁不喜欢在知识的海洋中遨游😤!2.描述银行存取款的流程是人们非常熟悉的事情,用户可以在
- 简单介绍快速排序(Quicksort) 是对 冒泡排序的一种改进。基本思想快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首
- 在android开发中,我们时常会遇到对字符串中某些固定的字段实现可点击和颜色的设置,现粘贴处我在开发中如何设置这些属性的。代码如下:pri
- 首先创建一个用户控件 如下图 用到的控件 label、button、TextBox 内部代码如下#region 分页字段和属性pr
- LRU简介LRU是Least Recently Used 近期最少使用算法,它就可以将长时间没有被利用的数据进行删除。实现最近面了阿里的外包
- 前言这篇文章主要是从类中static修饰的成员变量,static修饰的成员方法这两个方面来讲解static,static成员变量的初始化会在
- 本文实例讲述了ActiveMQ在C#中的应用。分享给大家供大家参考,具体如下:ActiveMQ是个好东东,不必多说。ActiveMQ提供多种
- Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之一,
- Metro UI For JavaFX!这是一个Windows设计风格的UI库,使用非常简单,只要一行代码就可以实现整体UI风格的替换!ne
- springBoot使用事物比较简单,在Application启动类s上添加@EnableTransactionManagement注解,然
- 代码分2块,server端:class Program {  
- 前言:quartz是一个定时调度的框架,就目前市场上来说,其实有比quartz更优秀的一些定时调度框架,不但性能比quartz好,学习成本更
- 此问题背景产生于近期需要上线的一个功能的埋点;主要表现就是在应用启动之后的一段时间内,内存使用一直呈现递增趋势。下图为场景复线后,本地通过
- 本文实例讲述了Java编程实现提取文章中关键字的方法。分享给大家供大家参考,具体如下:实现代码:/** * 相关的jar包 * lucene
- 最近项目中的活动面板要做来回滚动卡牌预览效果,感觉自己来写的话,也能写,但是可能会比较耗时,看到Github上有开源的项目,于是就借用了,G
- 本文实例讲述了C#远程获取图片文件流的方法。分享给大家供大家参考,具体如下:protected void Page_Load(object
- static void Main(string[] args) &nb
- 概述@SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。基本用法如下:1. 添加Maven