首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

integer常量在哪_java 常量

大家好,又见面了,我是你们朋友全栈君。...目录 常量 Integer a= 127 与 Integer b = 127相等吗 ---- 常量 java中存在字符串常量,维护了所有String对象 使用String s=”zx”时候是使用...String.valueOf(“zx”)从常量池中找了个对象返回 如果不存在则将内容放入常量池中 在使用new时候是直接创建一个新对象在堆中 Integer中也有常量 其中缓存了-128到127之间数字...如果整型字面量值在-128 到 127 之间,那么自动装箱时不会 new 新Integer 对象,而是直接引用Integer常量池中 Integer 对象,超过范围 a1==b1...// true //如果整型字面量值在-128到127之间, //那么自动装箱时不会new 新Integer 对象, //而是直接引用常量池中Integer对象, //超过范围 a1==b1

89520

Java常量【Class常量、运行时常量、字符串常量

我们写每一个Java类被编译后,就会形成一份Class文件;Class文件除了有类版本、字段、方法、接口等描述信息外,还有一项信息是常量表(Constant Pool Table),用于存放编译期生成各种字面量与符号引用...运行时常量存在于内存中,是方法区一部分。它是Class常量被加载到内存之后版本。...运行时常量相对于Class文件常量另一个重要特征是具备动态性,Java语言并不要求常量一定只在编译期才能产生,也就是说,并非预置入Class文件中常量内容才能进入方法区运行时常量,运行期间也可以将新常量放入池中...字符串常量 字符串常量Java内存区域哪个位置? 在JDK6.0及之前版本,字符串常量是放在Perm Gen区(也就是方法区)中; 在JDK7.0版本,字符串常量被移到了堆中。...常量池内存位置演化 在JDK1.7之前运行时常量逻辑包含字符串常量,存放在方法区,此时HotSpot VM对方法区实现方式为永久代。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java常量(静态常量与运行时常量

    大家好,我是架构君,一个会写代码吟诗架构师。今天说一说Java常量(静态常量与运行时常量)[通俗易懂],希望能够帮助大家进步!!!...Java常量,实际上分为两种形态:静态常量和运行时常量。...,包括了如下三种类型常量: 类和接口全限定名; 字段名称和描述符; 方法名称和描述符 Java中八种基本类型包装类大部分都实现了常量技术,它们是Byte、Short...此处,方法中代码存放位置则是方法表属性表中一项名为"Code"属性里面。...运行时常量相对于CLass文件常量另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是并非预置入CLass文件中常量内容才能进入方法区运行时常量,运行期间也可能将新常量放入池中

    2.4K21

    JAVA-常量常量

    文章目录 1.常量 2.Java常量 2.1. 静态常量: 2.2....运行时常量: 3.基本数据类型包装类常量 4.java字符串常量 1.常量 常量表示程序运行过程种不可改变值,主要作用如下: 1.代表常数,便于程序重构和修改。...常量java中,为了避免频繁创建和销毁对象影响系统性能,引入了常量,通过常量实现了对象共享。...(在基本数据类型中,==比较是数值;在复合数据类型中,比较是内存地址。) java常量可做如下分类: 2.1....运行时常量相对于CLass文件常量另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是并非预置入CLass文件中常量内容才能进入方法区运行时常量,运行期间也可能将新常量放入池中

    1.9K30

    jvm字符串常量_java 常量

    常量 class常量 Java源文件编译之后得到class文件,其中有项信息就是常量,保存有字面量和符号引用,比如 public class JvmClass1 { final int b=...这两项就是java和abcd这两个字符串字面量。 而符号引用也是一些常量,比如全限定类名,字段名称和描述符,方法名称和描述符。 这是类名。 这是变量名。...c=”java”; String d=”abcd”; String e=”java”; String f=new String(“java”); } } 运行时常量 && 字符串常量 class常量被加载到内存后...运行时常量相对于class常量一个特点是具有动态性,Java不要求所有常量在编译器产生,可以在运行时产生常量加入常量,例如String类intern()。...意思是当一个字符串对象调用intern方法,如果池中已经存在值相等(通过Stringequal函数比较)字符串常量,就返回常量池中常量,也就是堆中对应实例引用。否则将这个字符串加入常量

    52620

    Java当中常量

    Java当中常量Java虚拟机jvm中,内存分布为:虚拟机堆,程序计数器,本地方法栈,虚拟机栈,方法区。...我们知道在class文件中,有类版本信息,字段信息,方法,接口等信息,还有一个就是常量, 这个就是class文件常量了。 class文件常量主要用于存放是什么呢?...常量是以表形式存在(表是用来存储字符串值,不存储符号引用),实际可以分两种,一种为静态常量,另一种为运行时常量,共有11中常量表,常量每一个常量都代表一张表。...常量: Class文件中存储所有常量Java中说过常量可以分两种形态,静态常量和运行时常量。...运行时常量java虚拟机在完成类加载后操作,将class文件中常量加载到内存中,并保证在方法区,我们口中常量是在方法区中运行常量,运行时常量具有动态性,在运行期间也能产生新常量放入池中

    34610

    java常量在方法区还是堆_JAVA常量

    /** * 测试 常量在分区位置 * * @author LiXuekai on 2020/6/9 */ public class StringConstantPoolTest {...=> Java堆 Class statics => Java Heap //类statics => Java堆 结论:jdk1.7时候,常量已经被安排在堆里面了。...说明这个常量就是在元空间里面了吧,不能在Java heap里面了吧。 在看元空间时候,有个这个图 说是开发jvm的人画。...所以,最终测试结论: 结论:这个常量(特指字符串常量而不是所有的常量),应该还是在Java heap里面, 上面的测试只能证明:jdk1.8中 字符串常量是在堆里面。...JAVA三种常量 此外,Java有三种常量,即字符串常量(又叫全局字符串)、class文件常量、运行时常量。 1.

    2.9K20

    触摸Java常量

    java常量是一个经久不衰的话题,也是面试官最爱,题目花样百出,这次好好总结一下。 理论 先拙劣表达一下jvm虚拟内存分布: ?...方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中存放位置。 虚拟机堆是jvm执行java代码所使用堆。...Java常量,实际上分为两种形态:静态常量和运行时常量。...而运行时常量,则是jvm虚拟机在完成类装载操作后,将class文件中常量载入到内存中,并保存在方法区中,我们常说常量,就是指方法区中运行时常量。...前文提到过,class文件中存在一个静态常量,这个常量是由编译器生成,用来存储java源文件中字面量(本文仅仅关注字面量),假设我们有如下java代码: 1 String s = "hi"; 为了方便起见

    1.1K10

    java 常量和运行时常量_常量在jvm哪个部分

    常量分类 常量大体可以分为:静态常量,运行时常量。 静态常量 存在于class文件中,比如经常使用javap -verbose中,常量总是在最前面把?...运行时常量呢,就是在class文件被加载进了内存之后,常量保存在了方法区中,通常说常量是运行时常量。...所以呢,讨论都是运行时常量 字符串常量 最最最流行、最典型就是字符串了 典型范例: String a = "abc"; String b = new String("abc"); System.out.println...包装类常量技术(缓存) 简单介绍 相信学过java同学都知道自动装箱和自动拆箱,自动装箱常见就是valueOf这个方法,自动拆箱就是intValue方法。...,通过实际例子和绘图来熟悉了下字符串常量和包装类常量使用。

    37330

    Java Class文件常量

    Class文件存在使得不同语言编写程序都可以运行在Java虚拟机上,只需要这些语言经过编译器编译后Class文件符合Java虚拟机定义规范,Java虚拟机就可以加载执行这些Class文件。...常量 走过了魔数和版本,接下去是Class文件中最关键部分常量常量由一个计数和具体常量项来组成,在我们代码中常量数量为0x0013(十进制是19),关于常量计数有一个比较特殊地方就是他是从...1开始计数,也就是说如果我们计数值是19,实际上是只有18个常量项。...常量池中主要存放两大类常量: 字面量 符号引用 字面量主要指的是文本字符串、声明为final常量值等 符号引用主要包含三类常量: 类和接口全限定名 字段名称和描述符 方法名称和描述符 Java代码在编译时候不存在连接时...大家可以通过javap -verbose xxx.class列出文件字节码内容 ? 通过比较javap -verbose常量索引和我们class文件二进制表示可以发现是一一对应

    76820

    class文件常量与运行时常量_java运行时常量

    代表着常量池中有多少个常量,由于常量池中常量数量不确定,所以才会有这个数据项。...这里所指常量JAVA代码中所说常量有所不同,这里常量主要包括字面量和符号引用,这两个概念很好理解。 字面量跟JAVA代码中常量概念类似,如字符串、常量值等等。...紧接着常量数量之后便是常量表了。刚刚也说了,每个表都会有一个一个字节标志位,那么常量数量0x002E之后一个字节便是0x0A,这个就是标志位,十进制是10,查表可知是个方法符号引用。...索引项是28,也就是常量池中第11项常量和28项常量,我们这里就通过工具来看了。...找到第11项常量,查看11项常量表结构,继续使用刚刚那样寻找方法,一直找到标志位为1常量项,也就是CONSTANT_Utf8_info表结构,这样就可以得出我们最开始查看那个表结构一些具体信息了

    40620

    Java字符串常量_字符串常量溢出

    Java内存分配中,总共3种常量Java 常量详解(二)class文件常量Java 常量详解(三)class运行时常量 1.字符串常量(String Constant Pool...) 在JDK1.7之前运行时常量逻辑包含字符串常量存放在方法区, 此时hotspot虚拟机对方法区实现为永久代 在JDK1.7 字符串常量被从方法区拿到了堆中, 这里没有提到运行时常量,也就是说字符串常量被单独拿到堆...,运行时常量剩下东西还在方法区, 也就是hotspot中永久代 在JDK1.8 hotspot移除了永久代用元空间(Metaspace)取而代之, 这时候字符串常量还在堆, 运行时常量还在方法区..., 只不过方法区实现从永久代变成了元空间(Metaspace) 1.1:字符串常量Java内存区域哪个位置?...(堆内是可以进行回收,然后方法区也是能回收,但是本身区域内存比较少,如果用字符串常量太多了,也会抛java.lang.OutOfMemoryError:PermGenspace 异常) 1.2:字符串常量是什么

    1.1K30

    彻底弄懂java常量

    0、Class文件常量 class文件是一组以字节为单位二进制数据流,在java代码编译期间,我们编写java文件就被编译为.class文件格式二进制数据存放在磁盘中,其中就包括class文件常量...运行时常量作用是存储java class文件常量池中符号信息,运行时常量池中保存着一些class文件中描述符号引用,同时在类解析阶段还会将这些符号引用翻译出直接引用(直接指向实例对象指针,内存地址...运行时常量相对于class常量一大特征就是具有动态性,java规范并不要求常量只能在运行时才产生,也就是说运行时常量内容并不全部来自class常量,在运行时可以通过代码生成常量并将其放入运行时常量池中...堆和Java堆),所以即使设置了持久代大小,也不会对常量产生影响;不断while循环在当前代码中,所有int字符串相加还不至于撑满 Heap 区,所以不会出现异常。...3、JAVA 基本类型封装类及对应常量 java中基本类型包装类大部分都实现了常量技术,这些类是Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型包装类则没有实现

    95001

    彻底弄懂java常量

    0、Class文件常量 class文件是一组以字节为单位二进制数据流,在java代码编译期间,我们编写java文件就被编译为.class文件格式二进制数据存放在磁盘中,其中就包括class文件常量...运行时常量作用是存储java class文件常量池中符号信息,运行时常量池中保存着一些class文件中描述符号引用,同时在类解析阶段还会将这些符号引用翻译出直接引用(直接指向实例对象指针,内存地址...运行时常量相对于class常量一大特征就是具有动态性,java规范并不要求常量只能在运行时才产生,也就是说运行时常量内容并不全部来自class常量,在运行时可以通过代码生成常量并将其放入运行时常量池中...堆和Java堆),所以即使设置了持久代大小,也不会对常量产生影响;不断while循环在当前代码中,所有int字符串相加还不至于撑满 Heap 区,所以不会出现异常。...3、JAVA 基本类型封装类及对应常量 java中基本类型包装类大部分都实现了常量技术,这些类是Byte,Short,Integer,Long,Character,Boolean,另外两种浮点数类型包装类则没有实现

    22.3K118

    Java常量理解与总结

    ,后2个存储主版本号,再接着是用于存放常量常量,由于常量数量是不固定,所以常量入口放置一个U2类型数据(constant_pool_count)存储常量容量计数值。...常量主要用于存放两大类常量:字面量(Literal)和符号引用量(Symbolic References),字面量相当于Java语言层面常量概念,如文本字符串,声明为final常量值等,符号引用则属于编译原理方面的概念...运行时常量相对于CLass文件常量另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是并非预置入CLass文件中常量内容才能进入方法区运行时常量,运行期间也可能将新常量放入池中...二.8种基本类型包装类和常量 1、java中基本类型包装类大部分都实现了常量技术,即Byte,Short,Integer,Long,Character,Boolean; Integer i1...4、java.lang.String.intern() 运行时常量相对于CLass文件常量另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是并非预置入CLass文件中常量内容才能进入方法区运行时常量

    60421

    Java Class文件之常量

    上一篇Java Class文件格式详解 讲解了整个Class文件组成部分,因为篇幅原因没做太多过细分析,今天我们重点分析下常量。...上一篇文章讲了常量总共17(上一篇写是18,修正一下,因为2没有使用)种类型,我们来分析其中最常用类型。...前面4字节是CA FE BA BE,这是固定魔幻数; 接下来4字节是版本号:00 00 00 34 ,换成10进制是52,这是JDK8版本号; 接下来是00 8C ,这个表示常量常量个数,一共有...再往下分析,接下来是08,表示类型为CONSTANT_String,这种类型接下来2字节表示字符串值索引,这里为004D,即77,即它指向索引77常量项,77项,77项位置在哪呢,在偏移量为0x328...位置: ?

    68420

    java 常量和运行时常量_常量池中字符串是对象吗

    简介: 这几天在看Java虚拟机方面的知识时,看到了有几种不同常量说法,然后我就去CSDN、博客园等上找资料,里面说内容真是百花齐放,各自争艳,因此,我好好整理了一下,将我自认为对理解写下来与大家共同探讨...: 在Java内存分配中,总共3种常量: 1.字符串常量(String Constant Pool): 1.1:字符串常量Java内存区域哪个位置?...(这里具体字符串如何分配就不细说了,可以看我另一篇博客) 2.class常量(Class Constant Pool): 2.1:class常量简介: 我们写每一个Java类被编译后,就会形成一份...3.运行时常量(Runtime Constant Pool): 运行时常量存在于内存中,也就是class常量被加载到内存之后版本,不同之处是:它字面量可以动态添加(String#intern...在解析阶段,会把符号引用替换为直接引用,解析过程会去查询字符串常量,也就是我们上面所说StringTable,以保证运行时常量所引用字符串与字符串常量池中是一致

    46630

    Java字符串常量

    然而这两种实现其实存在着一些性能和内存占用差别。这一切都是源于JVM为了减少字符串对象重复创建,其维护了一个特殊内存,这段内存被成为字符串常量或者字符串字面量。...JVM通过字符串常量查找不到内容为droid字符串对象存在,那么会创建这个字符串对象,然后将刚创建对象引用放入到字符串常量池中,并且将引用返回给变量str1。...intern 对于上面使用new创建字符串对象,如果想将这个对象引用加入到字符串常量,可以使用intern方法。...字符串常量实现前提条件就是Java中String对象是不可变,这样可以安全保证多个变量共享同一个对象。...字符串常量存放是对象引用,不是对象。在Java中,对象都创建在堆内存中。 更新验证,收到很多评论也在讨论这个问题,我简单进行了验证。

    1.2K20

    第46节:Java当中常量

    标题图 Java当中常量Java虚拟机jvm中,内存分布为:虚拟机堆,程序计数器,本地方法栈,虚拟机栈,方法区。...我们知道在class文件中,有类版本信息,字段信息,方法,接口等信息,还有一个就是常量, 这个就是class文件常量了。 class文件常量主要用于存放是什么呢?...常量是以表形式存在(表是用来存储字符串值,不存储符号引用),实际可以分两种,一种为静态常量,另一种为运行时常量,共有11中常量表,常量每一个常量都代表一张表。...常量: Class文件中存储所有常量Java中说过常量可以分两种形态,静态常量和运行时常量。...运行时常量java虚拟机在完成类加载后操作,将class文件中常量加载到内存中,并保证在方法区,我们口中常量是在方法区中运行常量,运行时常量具有动态性,在运行期间也能产生新常量放入池中

    83450

    Jvm常量、运行时常量、字符串常量理解

    常量 是.class文件常量,也可以理解为一张表,虚拟机指令根据这张常量表找到要执行类名,方法名,参数类型,字面量等信息 运行时常量 常量是*.class文件中,当该类被加载,它常量信息就会放入运行时常量...,并把里面的符号地址变为真实地址 常量只有类文件在编译时候才会产生,而且是存储在类文件中。...当字符串常量池中存储比较多字符串时,会导致hash冲突,从而每个节点形成长长链表,导致性能下降。所以在使用字符串常量时,一定要控制容量。...可以看出s3和s5都是对#4常量引用,为true原因是jvm存在编译期优化机制,在编译期(javac *.java时)会将可以拼接字符串常量帮你自动拼接了,由于字符串常量池中已经存在了,因此会让...s3=s6输出true 简单介绍intern方法,可以使用intern方法,主动将串池中还没有的字符串对象放入字符串常量 通过intern方法主动将s4字符串放入了字符串常量,将这个字符串对象尝试放入串

    1.6K30
    领券