快捷搜索: 王者荣耀 脱发

java面试 : JAVA中 常量的储存位置

常量池:存放字符串常量和基本类型常量(public static final)

常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。

final修饰的局部变量是存放在栈中还是在常量池中

存放在常量池中。首先final关键字对于变量的存储区域是没有任何影响的。jvm规范中,类的静态变量存储在方法区, 实例变量存储在堆区。也就是说static关键字才对变量的存储区域造成影响。final关键字来修饰变量表明了该变量一 旦赋值就无法更改。在Java中你可以这样理解:所有的变量,包括基本类型和引用类型,它们的变量都是存放在栈中 ,栈中的每个变量都包含类型、名称、值这些内容,只不过基本类型变量的值为一个具体的值,而引用类型的变量的 值为对象在堆中的地址。

java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间

经验分享 程序员 微信小程序 职场和发展