java常量池

1.常量池的有什么用:

常量池是为了避免频繁的创建和销毁对象而影响系统性能,其实现了对象的共享。

2.常量池的存储:

一般指的常量池是指运行时常量池,是方法区的一部分。常量池的初始内容则存储在编译后的Class文件中。

3.常量池中有什么:

常量池主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References),字面量相当于Java语言层面常量的概念,如文本字符串,声明为final的常量值等,符号引用则属于编译原理方面的概念,包括了如下三种类型的常量:

  • 类和接口的全限定名
  • 字段名称和描述符
  • 方法名称和描述符
4.常量池的经典例子(String类型):
String str1 = new String("abcd");
String str2 = "abcd";
String str3 = "abcd";

System.out.println(str1==str2);//false
System.out.println(str2==str3);//true


str1就new出来的一个对象,在堆内存空间中创建一个新的对象,str1中储存的是创建出来的对象的地址。






str2则是从常量池中取出的一个对象,就像1,2,3这种数字一样,1等于1,那是肯定的因为他们都是1。就如str2==str3为true是一个道理,他们都是abcd.
补充:
为什么程序会知道如上abcd这个常量的存在呢,这是因为在代码的编译期的时候,程序就可以从代码中识别abcd这个字符串,并将他存入常量池。
本文是结合百度和其他文章加自己理解整理的,感觉这些就足够了,如果更详细一点的可以查看:
http://www.jianshu.com/p/c7f47de2ee80
或者百度搜索常量池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值