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类型转换】相关推荐

  1. Java类型转换笔记

    Java类型转换笔记 关于基本数据类型之间的互相转换:转换规则 1.八种基本数据类型当中除布尔类型之外剩下的7中类型之间都可以互相转换 2.小容量向大容量转换,称为自动类型转换,容量从小到大排序: b ...

  2. 对象在内存中的存储基本类型和包装类java类型转换

    对象在内存中的存储 对象头.实例数据和填充数据(为了对齐) 实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐. 填充数据:由于虚拟机要求 ...

  3. java 类型转换顺序_Java类型转换,顺序结构及条件结构,循环结构

    一.Java类型转换 转换类型: 1.自动类型转换:把小的放到大的里面 2.强制类型转换:把大的放到小的里面 3.把字符串类型转换成其他数据类型(使用对应包装类的parsexxx()方法) 同类型转换 ...

  4. java类型转换异常_解决java.lang.ClassCastException的java类型转换异常的问题

    解决java.lang.ClassCastException的java类型转换异常的问题,异常,对象,错误,给大家,会报 解决java.lang.ClassCastException的java类型转换 ...

  5. Java 类型转换: char转int

    Java类型转换: char转int 源码 package com.onlydemo.javalang;/*** 类型转换: char转int* * 1.char-'0' 将char转int* 2.C ...

  6. java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)

    数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...

  7. java 类型转换的原理

    2019独角兽企业重金招聘Python工程师标准>>> 最近在看JDK的源码,在看源码的时候看到了0xff这么个东东,从这里引出了类型转换.因此在此记录下. 在写原理之前先看几个例子 ...

  8. java类型转换_JAVA类型转换大全

    Java自带的库很多用起来都不是那么方便,类型转换很多都要显示去做真的有点难记住.找了篇资料说的很详细,记录下来吧. integer   to   String   :         int   i ...

  9. Java 类型转换

    示例: 1 package my_package; 2 3 import java.util.Arrays; 4 5 /** 6 * 基础数据类型的一些操作 7 * 基础数据类型本身就是一个类,自带了 ...

  10. java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...

    在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...

最新文章

  1. java内部类gc_Java内部类持有外部类的引用详细分析与解决方案
  2. nginx同域名代理tomcat不同目录下的文件
  3. js 字符串删除首尾_JavaScript trim 实现去除字符串首尾指定字符的简单方法
  4. PHP命令注入 Command injection
  5. 若一个月给你50000元,要你选下面一件事做,你会选?
  6. Linux下,查看USB设备信息
  7. 持续集成部署Jenkins工作笔记0006---运行Jenkins主体程序并初始化
  8. threejs 热力图做成材质_冷轧钢与热轧钢有什么区别?
  9. webdriver原理(自己做个记录)
  10. TCP相关面试题总结
  11. 机器学习 --- 4. 大内密探HMM(隐马尔可夫)围捕赌场老千(转)
  12. PMP考试有哪些技巧?
  13. 图论及其应用 2009年 期末考试答案 总结
  14. 140个电脑小知识、小技巧(2)
  15. 2015到3020计算机参考文献,同等学力相关论文范文素材,与计算机网络参考文献2016年相关硕士毕业论文...
  16. oracle g1 gc,G1 GC日志分析
  17. speedoffice表格如何方框内打勾
  18. SOAR+HIDS,增强主机安全防护
  19. 工作多年,对程序员“未来”的一些看法
  20. 全景图矫正 matlab,全景图的后期水平矫正的三种方法

热门文章

  1. 按照奇原则配置汉明码_舞台灯光设计的原则和工艺要求
  2. c# HttpClient 获取cookie
  3. ROS将xacro文件转换成URDF文件
  4. Transactional(事务)
  5. 一起学习C语言:C语言数据类型(二)
  6. Android 集成Thinker 教程
  7. 图解+原理推导完全读懂KPM算法
  8. javascript 中的onblur 事件
  9. RecyclerView调用notifyDataSetChanged()不起作用
  10. STM32单片机(1) 总记 学习资料+参考手册+LED灯