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

Java Class文件常量

上面这张图是经过编译后的Class文件中的内容 魔数(magic)与版本号 Class文件开头固定的4个字节为魔数,唯一作用就是用来确定这个文件是否是一个能被虚拟机接收的class文件。...常量池 走过了魔数和版本,接下去是Class文件中最关键的部分常量池,常量池由一个计数池和具体的常量项来组成,在我们代码中常量池数量为0x0013(十进制是19),关于常量池的计数池有一个比较特殊的地方就是他是从...常量池中主要存放两大类常量: 字面量 符号引用 字面量主要指的是文本字符串、声明为final的常量值等 符号引用主要包含三类常量: 类和接口的全限定名 字段的名称和描述符 方法的名称和描述符 Java代码在编译的时候不存在连接时...,也就是Class文件中不会保存各个方法、字段的最终内存布局信息,这些字段、方法的符号引用如果在运行期不进行转换则得不到真正的内存入口地址,所以在虚拟机运行时,需要从常量池获得对应的符号引用,在类创建和运行时解析翻译到具体的内存地址中...大家可以通过javap -verbose xxx.class列出文件字节码的内容 ? 通过比较javap -verbose常量池的项的索引和我们class文件二进制的表示可以发现是一一对应的。

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

    python常量和变量

    1.1 常量 常量是内存中用于保存固定值的单元,在程序中常量的值不能发生改变;python并没有命名常量,也就是说不能像C语言那样给常量起一个名字。...python常量包括:数字、字符串、布尔值、空值; 一般所有字母大写 例子 1 PI =3.141592653 2 print(PI) 3 PI =3 4 print(PI) 1.2 变量 变量是内存中命名的存储位置...,与常量不同的是变量的值是可以动态变化的;python中变量的命名规则如下: 变量的名字的第1个字符必须是字母或下划线(_); 变量的名字的第1个字符后边可以使由字母、下划线(_)、或数字(0~9)组成...; 变量的名字是区分大小写的,也就是说Score和score是不同的; 在python中对变量进行赋值时,使用单引号和双引号的效果是完全一样的; python中已经被使用的一些关键字不能用于声明变量;...print((3+6)/5) print((3+6)/5+3) print(((3+6)/5+3)*2) 命名规范 1.用数字.字母.下划线组成 2.不能用数字开头.更不能是纯数字 3.不能使用python

    78750

    Maven命令与pom文件常量

    使用命令编译工程的话,工程文件夹可以自己手动创建,这个手动创建的样式和用Eclipse创建的样式差不多,工程文件夹下是main和test文件夹还有pom配置文件,这个pom文件里的信息必须要配置对,基本...Maven都是围绕着这个文件进行识别的,main和test文件里就是工程代码和测试代码,例如我创建一个MavenTest2的工程: ?...main、test文件夹放进去: ?...打好的包会放在这个文件夹下: ? 5.mvn jar:jar 命令:此命令只打JAR包,同样的打好的jar包会放在target文件夹里: ? 6.mvn clean 命令:此命令用于清理工程文件 ?...pom文件:   在Eclipse打开pom配置文件,首先进入的是修改工程信息的界面,这个界面可以修改工程的信息 ? ? ? ? ?

    96420

    Python优化机制:常量折叠

    在本文中,我们深入探讨了什么是常量折叠,了解了它在 Python 世界中的适用范围,最后解读了 Python 的源代码(即 CPython),并分析出 Python 是如何优雅地实现它。...因此,上述表达式可以等效地被执行为: >>> day_sec = 86400 Python 中的常量折叠 在 Python 中,我们可以使用反汇编模块(Disassembler)获取 CPython...常量折叠的适应范围 Python 会尝试折叠每一个常量表达式,但在某些情况下,即使该表达式是常量,但是 Python 并不会对其进行折叠。...所有的 AST 优化(包括常量折叠)都可以在 ast_opt.c 文件中找到。基本的开始函数是 astfold_expr,它会折叠 Python 源码中包含的所有表达式。.../) Python dis模块与常量折叠(https://yasoob.me/2019/02/26/python-dis-module-and-constant-folding/) CPython实现常量折叠的简单方法

    77300

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

    在上一博文《JVM进阶(十八)——初识Class文件》中,我们了解了Class文件的一些基础知识。他的整个内部结构就是一张很大的表,我们就是从这张表入手,一一分析每个部分的结构。...再次说明,Class文件内部的数据是按照规则紧凑排列的,中间不会有空隙。 接下来就是说明常量的个数了。代表着常量池中有多少个常量,由于常量池中的常量数量不确定,所以才会有这个数据项。...这里所指的常量与JAVA代码中所说的常量有所不同,这里的常量主要包括字面量和符号引用,这两个概念很好理解。 字面量跟JAVA代码中的常量概念类似,如字符串、常量的值等等。...new Main(); m.setName('No Silver Bullet'); System.out.println(m.getAge()); } } 根据以上知识和代码,我们继续来看看Class文件接下来的数据...11项常量和28项常量,我们这里就通过工具来看了。

    40620

    Python编程 变量与常量

    作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。   ...座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ ---- 目录 前言 一.变量与常量 1.变量与常量的定义 2.变量与常量的区别 3.变量的创建 4.变量的创建 重点 5.id...()函数 常量 ---- 前言 本章将会讲解在Python编程中的变量与常量,了解变量与常量的定义,和他们之间的区别,以及如何创建变量。...可以同时为多个变量赋值 总结: 在Python当中创建变量无需声明类型 每个变量在使用前都必须赋值,变量赋值以后才会被创建 “=”号这个赋值运算符是从右往左的计算顺序 Python允许同时为多个变量赋值...---- 常量 常量就是不变的量,或者说在程序运行过程中不会改变的量。在Python中使用全部大写来辨别常量。 注意:Python中没有保护常量的机制,所以也没有严格意义上的常量

    42720

    PythonPython中的常量与变量

    常量与变量 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们详细介绍了Python环境的搭建过程,在今天的内容中我们将会开始学习Python的第一个基础知识点——变量与数据类型。...,这里我们直接在新窗口中新建我们需要的文件即可,步骤还是:选择文件夹—>单击右键—>选择新建—>选择Python文件 之后我们正常设置文件名即可,这里就不再继续展开。...在Python中这种语法规则也同样是被遵守的,当我们在Python中尝试修改常量的值的话,程序则会显示无法赋值给文字: 在Python中的字面常量可以分为3类: 数字字面常量——1、 2、 3……等整数和..., 3.1415 # 数字字面常量 'a', 'asdf' # 字符串字面常量 True, False # 布尔字面常量 2.2 特殊常量 Python与C/C++不同的是,在C/C+...+中除了字面常量外还存在三种常量: 通过const修饰的常变量 通过#define定义的常量 通过enum定义的枚举常量 但是在Python中除了字面常量外,只有一种特殊常量——None: 当我们尝试着给这个常量进行赋值操作时就会出现上述报错

    7310

    构造Python中的常量

    构建常量 Python中不存在像const那样的常量关键字,只是在内建空间中提供了一小部分常量,比如True、False、None等。那么在Python中如何使用常量呢?...一般来说有如下两种方法: 通过命名风格来提示使用者该变量代表的意义为常量,比如MAX_NUMBER、TOTAL。...然而这种方式并没有真正实现常量,其对应的值仍然可以被改变,这只是一种约定俗成的风格。 通过自定义类实现常量功能。这要求符合“命名全部为大写”和“值一旦被绑定便不可再修改”这两个条件。...---- 将常量集中到一个文件 无论采用那种方式实现常量,都建议将常量集中到一个文件中,因为这样有利于维护,一旦修改常量的值,可以集中统一进行而不是逐个进行检查。...__dict__[name] = value const = _const() const.PI = 3.14 假设上面的模组名是cosnt,使用文件可以写成: from const import

    3.3K20

    Python 定义自己的常量

    在很多高级语言中都会提供常量的关键字来定义常量,如 C++ 中的 const , Java 中的 final 等,但是 Python 语言因为变量无类型,所以也就不存在这样的修饰符,其本身并未提供任何机制来进行常量的定义...由于常量的值一旦绑定则不可再修改,所以也就是说对常量二次赋值时需要抛出异常。因此我们显然需要改写自定义的常量类的赋值方法。...在 Python 中,当我们对类的属性进行赋值时,会自动调用 object 类的 __setattr__() 函数,该函数的定义如下: object....异常处理的定义方式请参看:Python 错误和异常 定义常量类: constant.py import sys class _const: # 自定义异常处理 class ConstError..._dict__[name] = value # 将系统加载的模块列表中的 constant 替换为 _const() 实例 sys.modules[__name__] = _const() 在其它文件中定义常量

    3.7K50

    Python基础语法-常量与变量

    Python是一门强类型的动态语言。 字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的。...举例来说:当我们如下赋值时: >>> a = 3 # 给一个对象3赋予变量a 对于上面的赋值,Python将会明确的执行3个步骤来响应这个语句: 创建一个对象代表值3; 如果不存在变量a,就创建变量a;...变量与对象之间的链接在Python中称之为引用。也就是说,一个引用也就是一种关联,在内存中以指针的形式实现。...变量、对象与引用的区别:+ 变量 是Python解释器系统表中的一些条目, 它们是用来指向对象的。+ 对象 是一些列的被分配的内存, 有足够的空间存储与之相关的数据类型。...接下来谈论另外一个话题,Python会缓存小的整数及小的字符串。

    41020

    常量与配置文件的应用考量

    魔法值代码例子如下: 12 String key = "Id#taobao_" + tradeId;cache.put(key, value); 二、常量与配置文件的区别?...而配置文件大多是xx.properties文件或xml文件、yaml文件,一般来说,目前properties文件和yaml文件是用的比较多的(分布式微服务项目,如spring+springmvc+mybatis...三、什么时候应该使用常量?什么时候应该使用配置文件?...对于魔法值通常建议使用常量进行管理,而像mysql、memcache、elasticesearch、tomcat、redis、mongodb、对象存储服务器(类似文件管理这样的)等通常使用配置文件进行管理...六、总结 常量和配置文件本质上是让我们的代码变得更稳定、更好维护、更易扩展等,最后带来的好处是团队研发效率的提高,项目开发顺利,不用加班。

    1.3K01

    Python基础语法-常量与变量

    Python是一门强类型的动态语言。 字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的。...变量与对象之间的链接在Python中称之为引用。也就是说,一个引用也就是一种关联,在内存中以指针的形式实现。...变量、对象与引用的区别:+ 变量 是Python解释器系统表中的一些条目, 它们是用来指向对象的。+ 对象 是一些列的被分配的内存, 有足够的空间存储与之相关的数据类型。...上面三句语句在内存中的图解为: 共享引用与原地改变 接下来要看的是有一些对象会进行原地改变,那就是Python的可变对象,包括列表,字典及集合。...接下来谈论另外一个话题,Python会缓存小的整数及小的字符串。

    1.1K100

    Python变量及常量解释说明

    参考链接: Python变量,常量和文字 文章目录  变量变量在内存中的表示常量 变量  (1)在计算机程序中,变量不仅可以是数字,还可以是任意数据类型, 变量子啊程序中就是一个变量名表示的,变量名必须是大小写英文...a = 1  #变量a是一个整数 b = "shuai" #变量b是一个字符串 c = True #变量c是一个布尔值True (2)在python中,等号"="是赋值语句,可以把任意数据类型赋值给变量...变量在内存中的表示  当在写变量  name  = "zhang" 时,python解释器干了两件事情: (1)在内存中创建了一个'zhang'的字符串; (2)在内存中创建了一个名为'name'的变量...常量  (1)所谓常量就是不变的变量,比如常用数学常数π就是一个常量,在python中通常用**变量名全部大写**来表示常量. ...PAI = 3.1415926 (2)但事实上PAI仍然是一个变量,python根本没有任何机制保证PAI不会改变,所以用全部大写的变量名只是一个标注或者是习惯用法,如果仍然要改变PAI变量值,也是没有人能拦住的

    56420

    Python内置(2)异常、常量、globals

    现在我应该指出,上面输出中的所有大写值都不是异常类型,实际上,Python中有另一种类型的内置对象是大写的:常量。让我们来谈谈这些。...此外,__debug__, True, False 和None是 Python 中唯一的真常量,即这 4 个是 Python 中唯一不能用新值覆盖的全局变量。...__cached__ 导入__cached__模块时,该属性存储该模块的已编译 Python 字节码的缓存文件的路径。你可能会惊讶,Python也要编译吗?是的。Python被编译。...现在,由于上面的“编译为字节码”步骤在导入模块时需要花费大量时间,因此Python将字节码存储(编组)到.pyc文件中,并将其存储在名为__pycache__的文件夹中。...然后,导入模块的__cached__参数指向此.pyc文件。你可以直接在Python代码中运行或导入一个.pyc文件,就像运行一个.py文件

    93420
    领券