黑马程序员_java学习第二课中的赋值运算符疑惑总结
2013-03-24 17:05
253 查看
------- 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类型在最运算的时候并没有提升..
对于不相同的两个类型做运算:
验证代码:
对于不同类型的数据之间是不能做运算的,但对于整数,字符可以做运算,得有一个操作为前提:自动类型提升..
原则:以大的为主,小的向大的提升...
今天在复习课程的时候,发现了一些不明白的地方:
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学习日记5_面向对象总结4
- 黑马程序员——Java学习笔记之13——“反射”总结
- 黑马程序员_java异常学习总结
- 黑马程序员--java学习总结(4)
- 黑马程序员 【】java学习之路——重写(Overriding)、重载(Overloading)、多态的简单总结
- 黑马程序员-Java基础学习第三天总结
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- 黑马程序员_java学习第三课中的循环结构实战总结
- 黑马程序员—JAVA基础学习日记十——反射学习总结
- 黑马程序员_java GUI学习总结
- 黑马程序员_学习笔记JAVA基础总结
- 黑马程序员 Java学习总结之Java异常机制
- 黑马程序员 Java学习总结之多线程中start方法和run方法的区别(这个一定要搞清楚)
- 黑马程序员-Java IO的学习总结
- 黑马程序员-Java网络编程学习总结
- 黑马程序员的Java总结暂停,学习计划有一点改变,下面全心学习ios
- 黑马程序员学习log第七篇基础知识:JAVA的面向对象之GUI总结