JAVA虚拟机类型转换学习-阿里云开发者社区

开发者社区> 松伯> 正文

JAVA虚拟机类型转换学习

简介:   Java虚拟机包括血多进行基本类型转换工作的操作码,这些执行转换工作的操作码后面没有操作数,转换的值从栈顶端获得。Java虚拟机从栈顶端弹出一个值,对它进行转换,然后再把转换结果压入栈。进行int、long、float和double类型之间转换的操作码。
+关注继续查看

  Java虚拟机包括血多进行基本类型转换工作的操作码,这些执行转换工作的操作码后面没有操作数,转换的值从栈顶端获得。Java虚拟机从栈顶端弹出一个值,对它进行转换,然后再把转换结果压入栈。进行int、long、float和double类型之间转换的操作码。

这些操作码是把int类型转换为比int类型占据更小空间的数据类型。这些操作码从操作数栈中弹出一个int类型值,将它转换为能用byte、short或char类型描述的int类型值,然后再把这个转换后的int类型值压入栈。

Java虚拟机中没有把long、float、double类型值直接转换为比int类型占据更小空间的数据类型的操作码。那么把float类型值转换为byte类型需要两个步骤:

1、float类型值必须通过f2i指令转换为int类型

1、所得的int类型再通过i2b转换为byte类型值

涉及byte、short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果,因此,如果把两个byte类型值相加,最后会得到一个Int类型的结果,如果需要得到byte类型结果,必须将这个int类型的结果显示转换为byte类型,否则会编译失败。

static byte addOneAndOne(){
    byte a = 1;
    byte b = 1;
    byte c = (byte)(a+b);
    return c;
    }

byte类型的最大值为127,最小值为-128.在这个范围内的int类型值转换为byte类型值,而当int类型值超出这个有效范围时,Java虚拟机通过截取和带符号扩展的方式将int类型值转换成为byte类型值。long、int、short和byte类型的最高位(“符号位”)指出此int类型值是正还是为负。如果符号位为0,值为正。如果符号位为1,值为负。byte类型的第7位为符号位。从int类型值转换到byte类型值的时候,第7位的值会被拷贝到第8位到31位。这样就产生了一个int类型值,这个值与原来类型值被转换为byte类型值后所获得的结果具有相同的数值。在执行完截取短和带符号扩展操作后,这个int类型变量中将容纳一个有效的byte类型的值。

例如, a变量的值为128(0x00000080),它被转换为byte类型后,所得到的byte类型值为-128(0xffffff80).然后,当a变量的值为-129(0xffffff7f)时,它被转换为byte类型后所得到的值为127(0x0000007f)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java虚拟机定义
<div class="mod-top" id="card-container" style="margin-bottom:18px; font-family:arial,宋体,sans-serif; font-size:14px; line-height:24px"> <div class="card-summary nslog-area clearfix" style="line-h
1482 0
Java虚拟机定义
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。[1]  中文名 java虚拟机
1238 0
《Java 7程序设计入门经典》一2.12 赋值中的类型转换
本节书摘来自华章出版社《Java 7程序设计入门经典》一书中的第2章,第2.12节,作者(美)Herbert Schildt Dale Skrien,更多章节内容可以访问云栖社区“华章计算机”公众号查看
821 0
独家 | 关于NLP和机器学习之文本处理的你需要知道的一切(附学习资源)
本文将介绍自然语言处理和机器学习中常见的文本预处理方法。
1846 0
+关注
松伯
技术专家 专注于大数据领域 博客园地址:https://www.cnblogs.com/yangsy0915/
187
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载