黑马程序员--02.Java语言基础--01.赋值语句练习2【个人总结】
2013-07-16 19:24
621 查看
Java赋值语句举例练习2
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------1. 基本数据类型题目
(1). 下列两个赋值语句正确么?为什么?
short s =4; //line1s=s+5; //line2
ANS: 以上语句编译失败!
* line1编译没有问题。原因已经介绍过了,变量初始化的时候,对于整型变量,只要右边的整型常量在左边整型变量表示的范围内就好,两边的数据类型可以不一致。
但是对于浮点型变量的初始化,由于小数点的位置不确定,所以只要把double类型的浮点型常量赋值给float类型的变量,就会编译出错。
*line2会导致编译失败。这个过程不能和变量初始化一样来考虑问题!
原因就是:s+5 其中s是short类型的 5默认是int类型的 所以两者做运算 结果会自动提升到int类型的。int向short类型转换(非初始化过程),是一种高类型向低类型做转换,形式可能损失精度!!所以编译会出错。
(2). 这两个赋值语句正确么?为什么?
short s =4;s+= 5;
ANS:以上语句编译成功!
(3). Java中s+=5; 和s =s+5;有什么区别?
在Java中,两者的区别就是:复合赋值运算符:会帮助运算类型右边的被提升运算结果做自动类型转换。保证编译通过
单独赋值运算符:仅仅做结果的数据类型提升,而不会根据两边的类型不一致而做自动类型转换。因此,如果两边类型不一致,并且是高类型向低类型赋值,必然会编译失败。
(4). 总结
遇见这种赋值运算的时候,先分成以下两种情况来考虑:
[1]. 当赋值是变量的初始化的时候:大原则就是实际考虑赋值过程中精度是否损失
*整型变量初始化:只要两边都是整型,并且右边的整型常量大小可以被左边的整型变量存储范围所容纳,这个赋值过程实际上就不会损失精度。编译正确。
e.g. short s=30000; //编译正确
byte b =128;// 编译错误
*浮点变量初始化:由于小数点的位置不确定,所以,只要是右边的double类型的常量赋值给左边的float类型的变量,实际的赋值过程可能会出现精度损失,编译出错。
e.g. float f=54.65;//编译错误。右边默认double类型。
[2]. 当赋值不是变量初始化的时候:分成单独赋值运算和符合赋值运算
*单独赋值运算:右边的计算结果会自动进行类型提升,一旦左边的类型比右边的类型低,这种赋值就会出现编译失败。
e.g.short s =0;
s = s+4; //4为int s为short 两者相加类型提升为int int向short转换 精度损失
//编译失败
*复合赋值运算:再计算结果被自动提升的基础之上,自动帮助进行类型转换,相当于一次手动强制类型转换,保证编译通过,这种赋值会编译成功。
e.g.short s =0;
s+=4; //虽然求和的运算结果是int类型,但是+=帮助做了自动类型转换,所以便以
//正确。相当于 s =(short) s+4;
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
相关文章推荐
- 黑马程序员--02.Java语言基础--03.堆内存和栈内存的区别【个人总结】
- 黑马程序员--02.Java语言基础--01.【关键字】【标示符】【常量】【变量】【运算符】
- 黑马程序员--01.赋值语句练习【个人总结】
- 黑马程序员--02.Java语言基础--01.【关键字】【标示符】【常量】【变量】【运算符】
- 黑马程序员--Java基础加强--02.代码简化 书写规律I_原始数据类型【重载】【多态】【泛型】【泛型限定】【个人总结】
- 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输
- 黑马程序员--Java基础加强--11.【MyEclipse使用快捷键提取方法的要点】【个人总结】
- java语言基础第二讲 课程作业02 总结
- 黑马程序员 Java自学总结二 Java语言的基础组成
- 黑马程序员 14 Java基础教学 - 14 - IO体系总结01
- 黑马程序员---java基础---02java基础语法(01)
- 黑马程序员—java毕老师视频个人总结01
- 黑马程序员--Java基础加强--12.利用反射操作泛型I【与反射+泛型相关的接口类型综述】【Type】【ParameterizedType】【个人总结】
- 黑马程序员——Java语言基础——02.java语言基础组成(1)关键字、标识符运算符等
- 黑马程序员——Java语言基础——02.java语言基础组成(2)语句
- 黑马程序员_java的语言基础组成最终篇(对第四课函数和数组的总结)
- 黑马程序员--Java基础加强--04.代码简化 书写规律III_数组参数【重载】【数组】【可变参数数组】【泛型可变参数数组】【个人总结】
- 黑马程序员——Java语言基础——02.java语言基础组成(4)数组及常用排序方法
- 黑马程序员_java的语言基础组成进阶(对第三课程序流程控制的总结)
- 黑马程序员_java的语言基础组成(第二课总结)