导航:首页 > 编程语言 > java中的常量池

java中的常量池

发布时间:2024-09-01 00:21:51

㈠ 我想问一下java通过new String创建字符串会被保存都常量池中吗

厚颜无耻的复制下

方式一:String a = “aaa” ;

方式二:String b = new String(“aaa”);

㈡ Java中的常量该放在哪

Java中的常量只能定义在类之中
常量定义格式:public|private static final 数据类型 常量名称 = 值 (开发中88%通用)

㈢ java中基本数据类型int a =10,a在栈中存着,10是在常量池中存着吗

int a =10 如果是这个 那么10在栈里面
Interger a = 10 那么这个在常量池里面
a是在-128到127之间,不会去堆中创建对象,而回是直接返回IntegerCache中的值;如果值不答在上面范围内则会从堆中创建对象。= 走的是valueOf()方法,valueOf(int)会走缓存。
Interger a = new Interger(10) 这个在堆里面

㈣ Java常量池是什么有什么用 和堆、栈有关系求简单易懂的解释!

1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间
这里我们主要关心栈,堆和常量池,对于栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。
对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。

㈤ java程序运行的五个步骤

1、Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言("semi-interpreted" language)。

第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点像make。如果java编译器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“cant find symbol”的错误。

编译后的字节码文件格式主要分为两部分:常量池和方法字节码。常量池记录的是代码出现过的所有token(类名,成员变量名等等)以及符号引用(方法引用,成员变量引用等等);方法字节码放的是类中各个方法的字节码。

第二步(运行):java类运行的过程大概可分为两个过程:1、类的加载 2、类的执行。需要说明的是:JVM主要在程序第一次主动使用类的时候,才会去加载该类。也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。

2、下面是程序运行的详细步骤:

㈥ 什么是JVM 运行时常量池

运行时常量池 vs 常量池

​ 要弄清楚方法区,需要理解清楚ClassFile,因为加载内的信息都在方法区。

​ 要弄清楚方法区的运行时常量池,需要理解清楚ClassFile中的常量池。

​ 一个Java源文件中的类、接口,编译后产生一个字节码文件。而Java中的字节码需要数据支持,通常这种数据会很大以至于不能直接存在字节码文件,换另一种方式,可以存在常量池,这个字节码包含了指向常量池的引用。在动态链接的时候会用到运行时常量池。

栈帧

[图片上传失败...(image-b8ec8b-1600702650468)]

动态链接

Javad 方法区究竟存了什么???

㈦ java中常量存放在哪

首先我认为只有作为类属性,加上了static final的,才被称为常量。
可以在三个地方的属性前添加final:
1.作为类属性,加static (通常意义上指的就是这种。在编程规范中要求这种属性名称必须全大写。)
2.作为对象属性,不加static
3.在方法体,或签名上声明。
第一种,static的,作为类信息在类被加载时被存在静态的方法区。
第二种,非static的,作为对象属性,在对象创建的时候被初始化,存在堆里。
第三种,在方法里的。我们知道在方法被调用时会被加载到栈中进行执行,所以写在方法里的变量存在栈中。

阅读全文

与java中的常量池相关的资料

热点内容
360断网急救箱网络异常修复不了 浏览:889
身份证验证的js文件 浏览:994
什么人经常换微信名字 浏览:707
网站源码挖掘 浏览:944
荔枝fm和app哪个播放量好 浏览:535
乐秀音频在哪个文件里 浏览:486
以数据说话什么意思 浏览:319
java中对象 浏览:794
酷狗网络机顶盒如何设置 浏览:408
threejs添加文字 浏览:436
微信春节理财通 浏览:948
qq主题模块应用教程 浏览:993
javaweb项目打包 浏览:59
qq主题是哪个文件夹里 浏览:642
超越狂暴升级txt书包 浏览:263
cad复制不能粘贴到新建文件 浏览:565
linux网络socket编程 浏览:926
战争雷霆客户端在哪个文件里 浏览:847
如何授权点淘app读取步数 浏览:671
sonarqube代码负责度 浏览:116

友情链接