【java类型转换】
int a ;
float b;
两种情况:
1,a+=b:
//j 按如下方法解析:
a = (int)((float)a + b);
2,a = a+b;
//按照如下方法解析
a = (float)a+b;
所以 a= a+b会报错 而a+=b不会。
-----------------------------其他:
Java编译器会在编译期或者运行期将byte和short类型的数据带符号扩展为相应的int类型数据,
将boolean和char类型数据零位扩展为相应的int类型数据。
因此,在处理boolean 、byte、short 和 char 类型的数组是,也会用相应的int类型的字节码指令来处理。因此,大多数对于上述类型数据的操作,实际上都是使用相应的 int 类型作为运算类型。
如果是final 修饰的变量,进行运算的时候则不会出现类型转换异常。
public class Test {
final int d = 3;
public static void main(String[] args){
final short a = 1;
final short b =2;
short c=a+b;
}
}
编译后使用反编译软件打开后,代码被解析成了这样:
public class Test
{
final int d = 3;
public Test()
{
}
public static void main(String args[])
{
short a = 1;
short b = 2;
short c = 3;
}
}
可以看到,对于final 修饰的基本类型的变量来说,他们之间的运算直接就被硬编码成了直接赋值语句,连中间结果都没有了,类型转换的异常也就没了。
此外,我们可以注意到,对于方法内的final 变量 a , b 来说,编码时被直接省略了。而Test 类的final 成员变量 d 依然保留着final 属性。
所以说,是否使用final修饰方法中普通变量对JVM来说没有区别!使用final修饰方法中普通变量主要是为了给Java前端编译器(如javac)看的!也就是说方法中被final修饰的普通变量在前端编译时被javac检查并保证该变量不会在作用域内被改变新值,但被编译成字节码后用于修饰方法中普通变量的final就已经不存在了!说的再具体点就是你用或不用final修饰方法中普通变量而生成的字节码文件(.class文件)没有区别。
【java类型转换】相关推荐
- Java类型转换笔记
Java类型转换笔记 关于基本数据类型之间的互相转换:转换规则 1.八种基本数据类型当中除布尔类型之外剩下的7中类型之间都可以互相转换 2.小容量向大容量转换,称为自动类型转换,容量从小到大排序: b ...
- 对象在内存中的存储基本类型和包装类java类型转换
对象在内存中的存储 对象头.实例数据和填充数据(为了对齐) 实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐. 填充数据:由于虚拟机要求 ...
- java 类型转换顺序_Java类型转换,顺序结构及条件结构,循环结构
一.Java类型转换 转换类型: 1.自动类型转换:把小的放到大的里面 2.强制类型转换:把大的放到小的里面 3.把字符串类型转换成其他数据类型(使用对应包装类的parsexxx()方法) 同类型转换 ...
- java类型转换异常_解决java.lang.ClassCastException的java类型转换异常的问题
解决java.lang.ClassCastException的java类型转换异常的问题,异常,对象,错误,给大家,会报 解决java.lang.ClassCastException的java类型转换 ...
- Java 类型转换: char转int
Java类型转换: char转int 源码 package com.onlydemo.javalang;/*** 类型转换: char转int* * 1.char-'0' 将char转int* 2.C ...
- java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)
数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...
- java 类型转换的原理
2019独角兽企业重金招聘Python工程师标准>>> 最近在看JDK的源码,在看源码的时候看到了0xff这么个东东,从这里引出了类型转换.因此在此记录下. 在写原理之前先看几个例子 ...
- java类型转换_JAVA类型转换大全
Java自带的库很多用起来都不是那么方便,类型转换很多都要显示去做真的有点难记住.找了篇资料说的很详细,记录下来吧. integer to String : int i ...
- Java 类型转换
示例: 1 package my_package; 2 3 import java.util.Arrays; 4 5 /** 6 * 基础数据类型的一些操作 7 * 基础数据类型本身就是一个类,自带了 ...
- java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...
在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...
最新文章
- java内部类gc_Java内部类持有外部类的引用详细分析与解决方案
- nginx同域名代理tomcat不同目录下的文件
- js 字符串删除首尾_JavaScript trim 实现去除字符串首尾指定字符的简单方法
- PHP命令注入 Command injection
- 若一个月给你50000元,要你选下面一件事做,你会选?
- Linux下,查看USB设备信息
- 持续集成部署Jenkins工作笔记0006---运行Jenkins主体程序并初始化
- threejs 热力图做成材质_冷轧钢与热轧钢有什么区别?
- webdriver原理(自己做个记录)
- TCP相关面试题总结
- 机器学习 --- 4. 大内密探HMM(隐马尔可夫)围捕赌场老千(转)
- PMP考试有哪些技巧?
- 图论及其应用 2009年 期末考试答案 总结
- 140个电脑小知识、小技巧(2)
- 2015到3020计算机参考文献,同等学力相关论文范文素材,与计算机网络参考文献2016年相关硕士毕业论文...
- oracle g1 gc,G1 GC日志分析
- speedoffice表格如何方框内打勾
- SOAR+HIDS,增强主机安全防护
- 工作多年,对程序员“未来”的一些看法
- 全景图矫正 matlab,全景图的后期水平矫正的三种方法