返回顶部
首页 > 资讯 > 精选 >java中整型常量和整型变量的区别有哪些
  • 767
分享到

java中整型常量和整型变量的区别有哪些

2023-06-02 22:06:11 767人浏览 安东尼
摘要

这篇文章主要为大家展示了“java中整型常量和整型变量的区别有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中整型常量和整型变量的区别有哪些”这篇文章吧。我下图代码第五行和第九行分别

这篇文章主要为大家展示了“java中整型常量和整型变量的区别有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中整型常量和整型变量的区别有哪些”这篇文章吧。

我下图代码第五行和第九行分别定义了一个整型变量和一个整型常量:

static final int number1 = 512;

static int number3 = 545;

Java程序员都知道两者的区别。

java中整型常量和整型变量的区别有哪些

下面我们就用javap将.class文件反编译出来然后深入研究Java里整型变量和整型常量的区别。

使用命令行javap -c constant.ConstantFolding查看.class文件反编译出来的字节码:

java中整型常量和整型变量的区别有哪些

结果:

java中整型常量和整型变量的区别有哪些

这些字节码指令的说明,在wikipedia里有说明:

wiki: https://en.wikipedia.org/wiki/Java_bytecode_instruction_listings

咱们Java程序员不需要把它们都背下来,只需要把这个网页收藏起来,要用的时候当成字典来用就行:

java中整型常量和整型变量的区别有哪些

sipush 545: 将整数545放置到栈上

putstatic #16:

将栈上的值545赋给当前类的静态字段里。

java中整型常量和整型变量的区别有哪些

那么putstatic #16里的#16代表什么含义?

我们再用javap -v 参数反编译,就能看到这个类的常量池(Constant pool). 大家看下图蓝色高亮的一行:

constant/ConstantFolding.number3:I

说明#16代表类constant.ConstantFolding的成员number3,类型为I。

java中整型常量和整型变量的区别有哪些

至此,这两行字节码指令联合起来,实际对应了我们写的Java代码:

static int number3 = 545;

我们继续分析javap反编译出来的字节码。

java中整型常量和整型变量的区别有哪些

aload_0: 将序号为0的本地变量的引入加载到栈上

invokespecial: 调用对象实例上的成员方法,如果有返回值,方法的返回值存储到栈上。具体调用的方法由#标识,可在常量池中查询到对应的方法名。

ldc: 将常量池上代号为#<数字>的常量的值从常量池加载到栈上。

我们从下图的常量池列表能发现,序号为#29的常量318976正是整型常量number1(512)和整型常量(623)的积。由此可以看出, number1 * number2这个表达式,因为参与运算的两个操作数通过STATIC和FINAL修饰成为了整型常量,因此其积在编译期就能得到,所以编译器在编译时就计算出来,存储在变量池里,序号为#29。

java中整型常量和整型变量的区别有哪些

那么整型变量做乘法运算,对应的字节码又是什么样的呢?

从下图序号为3的code开始:

getstatic #16: 将类的静态成员#16加载到栈上。#16对应的成员为number3,值为545。

getstatic #18: 将类的静态成员#18加载到栈上。#18对应的成员为number4,值为619。

imul: 执行栈上两个整数的乘法运算。

istore_2: 将结果保存到局部变量2里。

此时,我们Java代码里的int product2 = number3 * number4就执行完了。

大家看到的剩下的蓝色字节码,都对应了下面这行打印语句。

System.out.println("Value: " + product1 + " , " + product2);

从这些字节码也能看出,Java里我们直接用加号进行字符串拼接操作,Java编译器在编译时,自动使用了StringBuilder进行优化

既然整型变量的乘积需要打印出来,因此字节码的iload_2将之前用istore_2保存在局部变量2中的计算结果又加载到栈上,这样乘积结果最后就能输出了。

java中整型常量和整型变量的区别有哪些

以上是“java中整型常量和整型变量的区别有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: java中整型常量和整型变量的区别有哪些

本文链接: https://lsjlt.com/news/231506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java中整型常量和整型变量的区别有哪些
    这篇文章主要为大家展示了“java中整型常量和整型变量的区别有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中整型常量和整型变量的区别有哪些”这篇文章吧。我下图代码第五行和第九行分别...
    99+
    2023-06-02
  • php中变量和常量有哪些区别
    php中变量与常量的区别有以下几点名称不同php中变量名需使用($)符号进行修饰,常量名则不需要,变量名建议使用小写,常量名建议使用大写。定义方式不同php中变量一般在赋值时进行定义,无法使用关键字或函数进行定义,而常量必须使用define...
    99+
    2024-04-02
  • Golang有类型常量和无类型常量的区别
    场景 在 Go 语言中,常量分为有类型常量和无类型常量。 // 有类型常量 const VERSION string = "v1.0.0" // 无类型常量 const RELEA...
    99+
    2023-05-14
    Golang 有类型常量 无类型常量
  • php中变量与常量有哪些区别
    这篇文章给大家分享的是有关php中变量与常量有哪些区别的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。区别:1、常量只能用define()函数或const关键字定义;而变量没有定义的关键字或函数,在赋值的时候被定义...
    99+
    2023-06-25
  • Java中的变量类型有哪些
    小编给大家分享一下Java中的变量类型有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、局部变量在方法或语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。局部变量声明在方法...
    99+
    2023-06-25
  • php常量和静态变量的区别有哪些
    这篇文章主要为大家展示了“php常量和静态变量的区别有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php常量和静态变量的区别有哪些”这篇文章吧。php中常量和静态变量的区别:1、常量都是不...
    99+
    2023-06-29
  • Golang有类型常量和无类型常量的区别是什么
    本篇内容主要讲解“Golang有类型常量和无类型常量的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang有类型常量和无类型常量的区别是什么”吧!场景在 Go 语言中,常量分为有...
    99+
    2023-07-05
  • C语言数据类型和变量常量有哪些
    这篇“C语言数据类型和变量常量有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言数据类型和变量常量有哪些”文章吧。首...
    99+
    2023-06-26
  • Java中变量类型转换有哪些
    这篇文章主要介绍Java中变量类型转换有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!public class TypeConvert{public static void...
    99+
    2023-06-02
  • java中不同变量的区别有哪些
    这篇文章将为大家详细讲解有关java中不同变量的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点...
    99+
    2023-06-14
  • php变量与常量命名的区别有哪些
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑什么是php常量?所谓常量就是不能改变的量,php常量一旦被定义,就不能被改变或取消定义。这是官方的解释,也是最权威的解释。php常量通常用来存储一个不被改变也不希望变...
    99+
    2020-12-20
    php 变量 常量
  • java中局部变量与全局变量的区别有哪些
    本篇文章为大家展示了java中局部变量与全局变量的区别有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、局部变量:局部变量的定义:定义在方法中的变量都是局部变量(main方法也是方法,所以定义...
    99+
    2023-05-31
    java 局部变量 全局变量
  • PHP实现交换两个整型变量的方法有哪些
    这篇文章主要介绍“PHP实现交换两个整型变量的方法有哪些”,在日常操作中,相信很多人在PHP实现交换两个整型变量的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP实现交换两个整型变量的方法有哪些...
    99+
    2023-06-25
  • JavaScript中常量和变量有什么区别
    这篇文章给大家介绍JavaScript中常量和变量有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。区别:变量可重新声明、可重新赋值;而常量一旦声明则无法改变的量,不可重新声明,不可重新赋值。变量可只声明,无赋值...
    99+
    2023-06-14
  • php中静态变量和普通变量有哪些区别
    这篇“php中静态变量和普通变量有哪些区别”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php中静态变量和普通变量有哪些区别...
    99+
    2023-06-29
  • python中变量类型有哪些
    python中变量的类型:1.数字类型,包含整型、浮点型和复数类型;2.布尔类型,有True和Fase值;3.字符串类型,字符集合;python中变量的类型有数字类型、布尔类型和字符串类型三种数字类型python中的数字类型包含整型、浮点型...
    99+
    2024-04-02
  • php中变量类型有哪些
    php中变量类型有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Prepr...
    99+
    2023-06-14
  • Python中有哪些变量类型
    这篇文章将为大家详细讲解有关Python中有哪些变量类型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种:整型int...
    99+
    2023-06-17
  • C++中整型有哪些
    这篇文章将为大家详细讲解有关C++中整型有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、整型整型即整数,与小数对应。许多语言只能表示一种整型(如Python),而在C++当中根据整数的范围提供了好...
    99+
    2023-06-25
  • Python整数和变量的知识点有哪些
    这篇文章主要介绍“Python整数和变量的知识点有哪些”,在日常操作中,相信很多人在Python整数和变量的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python整数和变量的知识点有哪些”的疑...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作