大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Java 常量,有2种意思:
创新互联建站-专业网站定制、快速模板网站建设、高性价比海林网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式海林网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖海林地区。费用合理售后完善,10余年实体公司更值得信赖。
第1种意思,就是一个值,这个值本身,我们可以叫它常量。
整型常量: 123实型常量:3.14字符常量: 'a'逻辑常量:true、false字符串常量:"helloworld"
第2种意思,表示不可变的变量,这种也叫常量,从语法上来讲也就是,加上final,使用final关键字来修饰某个变量,然后只要赋值之后,就不能改变了,就不能再次被赋值了。
扩展资料:
用英文单引号括起来的单个字符,例如:'a'、'字'。这是最常见的声明字符形式。
用英文单引号括起来的十六进制字符代码值来表示单个字符。其格式为:'uXXXX',其中u是约定的前缀(u是unicode的第一个字母),而后面的XXXX位4位十六进制数,是该字符在unicode字符集中的序号。
为了实现对字符信息的存储,人们将可能用到的字符排成一个有序的字符队列,这种由多个有序字符组成的集合称为“字符集-Charset”,而在计算机中世纪保存的是字符在字符集中的序号。
即一个二进制形式的整数。而到底采用1个还是多个字节以及具体如何来存储一个字符集的字符,这种相关的规定被称为“编码-Encoding”。
Java最初采用的是16位Unicode编码(UTF-16)来表示字符,无论序号大小,每个Java字符都占用定长的2B(16个二进制位),因此最多能表示65536个不同的字符,这只是粗略的说法,实际上如果采用变通的方式进行字符编码,UTF-16编码可以表示的字符远多于65536个。
参考资料来源:百度百科-Java字符
java常量池不在堆中也不在栈中,是独立的内存空间管理。
1. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
2. 堆:存放所有new出来的对象。
3. 常量池:存放字符串常量和基本类型常量(public static final)。
对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。
java8之前:
java8之后:元数据区 Metaspace
由于 PermGen 内存管理的效果远没有达到预期,所以JCP已经着手去除PermGen的工作。在JDK7中,字符串常量已经从永久代移除。现今 JDK8 中 PermGen 已经被彻底移除,取而代之的是metaspace数据区,使用native内存,申请和释放由虚拟机负责管理。
那么,JVM中常量池到底存放在哪里?
Java6和6之前,常量池是存放在方法区(永久代)中的。
Java7,将常量池是存放到了堆中。
Java8之后,取消了整个永久代区域,取而代之的是元空间。 运行时常量池和静态常量池存放在元空间中,而字符串常量池依然存放在堆中。