Java基础语法之类型转换

1.默认转换


实心箭头,表示无信息丢失,虚箭头,表示可能有精度损失。

  • 如果两个操作数中有一个是double,另一个会被转换成double
  • 否则,如果其中一个操作数是float,另一个操作数将会转换成float
  • 否则,如果其中一个操作数是long类型,另一个操作数将会转换为long类型
  • 否则,两个操作数都会被转换成int类型。

2.强制转换

  • 强制转换通过截断小数点将浮点值转换成整型
  • 如果要四舍五入,要使用Math.round(9.97);,返回值是long。

思考题:下面两个定义有没有区别

float f1=(float)12.345;
float f2=12.345f;

有区别,f1是从double转换过来的,f2本身就是float类型。

思考题

byte b1=3,b2=4,b;
1.b=b1+b2;
2.b=3+4;

1.报错,两个byte类型都会先转换成int,类型提升。
2.常量,先计算值,然后看是否在byte范围里,如果在就不报错。
变量在运行时才确定,而常量在编译时就确定

思考题byte b=(byte)130,结果是多少?

  • 计算机中的数值计算都是通过补码进行的
    130 : 00000000 00000000 00000000 10000010
    这是130的原码,也是反码,还是补码。
    做byte截取,8位:10000010

所以结果为-126

补充知识

  • 原码:最高为符号位,0表示正数,1表示负数
  • 反码:正数的反码与原码相同,负数的反码符号位不变,数值位取反
  • 补码:正数的补码与原码相同,负数的补码为反码+1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 常量的概述和使用 A:什么是常量在程序执行的过程中其值不可以发生改变 B:Java中常量的分类字面值常量自定义常量...
    野望君阅读 636评论 0 0
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,634评论 4 12
  • 机器数之原码反码补码 基本概念 字在计算机中,一串数码作为一个整体来处理或运算的,称为一个计算机字,简称字。字通常...
    Showdy阅读 1,130评论 0 2
  • 本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可...
    yang2yang阅读 2,316评论 1 13
  • 人生如旅行,一路是风景,一路是人生。 我很喜欢旅行,也很喜欢旅途中的景色。坐在车中的我是常常舍不得睡觉的。只是...
    小骨殿下阅读 380评论 0 0