黑马程序员_java学习第二课中的赋值运算符疑惑总结
来源:互联网 发布:java程序员笔试题 编辑:程序博客网 时间:2024/05/22 01:41
------- android培训、java培训、期待与您交流! ----------
今天在复习课程的时候,发现了一些不明白的地方:
class Demo
{
public static void main(String[] args)
{
byte b=33;
float f=33.3f;
f+=11.1;
System.out.print(f);
}
}
系统默认的整数类型是int类型 系统默认的小数类型是double类型
float f=33.3f ; 这是赋值动作..
f+=11.1 ;这句话我在学习中,理解的是11.1是double类型 赋值运算符把最后的结果自动强转成了float类型并赋值给f;
疑惑点:
既然赋值运算符确实做了自动强制转换动作,就可以理解 byte b=33为什么会通过了...
可以理解赋值运算符在赋值的时候,先自动把int类型的数据转成了byte数据...
但float f=33.3,这样又不对了 ,赋值运算符并没有把double类型的数据自动强转成float数据...
个人总结:
经过网上的查找,和朋友的讨论,*=这种赋值运算符比较特殊,确实做到了自动强制转换并赋值的动作...
对于为什么byte b=33可以,而float f=33.3不可以..
byte b=33 ; 33虽然是int类型,但是编译器会预判该数据是否在byte的取值范围内,在不丢失任何数据的情况下,给予转换..
float f=33.3;33.3是double类型,精度比float要高,编译器预判该数据放在float中会损失精度,在要丢失数据的情况下,不会给予转换..
最后,个人和朋友认为:直接赋值是 温柔的转换,会在不丢失数据的情况下才给予转换..
而*=这种赋值是 野蛮的转换,它不管你丢不丢失数据,就强制的转换了..
对于相同的两个类型做运算:
验证代码:
通过以上的代码验证 :相同的byte类型数据做运算会自动提升到int类型, 不光byte,在short类型, char类型做运算的时候,也会自动提升到int类型做运算..
而小数类型中float类型,相同的float类型在最运算的时候并没有提升..
对于不相同的两个类型做运算:
验证代码:
对于不同类型的数据之间是不能做运算的,但对于整数,字符可以做运算,得有一个操作为前提:自动类型提升..
原则:以大的为主,小的向大的提升...
- 黑马程序员_java学习第二课中的赋值运算符疑惑总结
- 黑马程序员_Java中的运算符
- 黑马程序员_java修饰符学习总结
- 黑马程序员_java运算符
- 黑马程序员_java第二天基础总结
- 黑马程序员_java学习第三课中的循环结构实战总结
- 黑马程序员_Java中的枚举总结
- 黑马程序员_Java没有运算符重载?
- 黑马程序员_JAVA基础-运算符
- 黑马程序员_Java没有运算符重载
- 黑马程序员_java基础知识学习总结一
- 黑马程序员_java基础知识学习总结三
- 黑马程序员_java基础知识学习总结四
- 黑马程序员_java异常学习总结
- 黑马程序员_java多线程学习总结
- 黑马程序员_java 集合框架学习总结
- 黑马程序员_java IO技术学习总结
- 黑马程序员_java GUI学习总结
- loadrunner 关联的理解
- 两个关于输出流和输入流做形参的函数
- java将一个数组存到txt文件中,然后读取
- 为QEMU添加新的QMP命令
- 快逸报表实现将多个报表导入一个excel的多个sheet
- 黑马程序员_java学习第二课中的赋值运算符疑惑总结
- 嵌入式Linux之我行——S3C2440上看门狗(Watchdog)驱动开发实例讲解
- 一个java实现的简单工厂模式
- MySQL中UNION和UNION ALL的使用
- 二分
- ubuntu下安装mysql5.5
- 嵌入式经典面试题
- 深入浅出大端和小端
- adb 协议