Java基础-类型转换

三、类型转换

各个类型之间的合法转换

在这里插入图片描述

​ 实心箭头,表示无信息丢失的转换;虚箭头, 表示可能有精度损失的转换。例如

int n = 123456789;
float f = n; // f is 1.23456792E8
// 整型int能够表示大约20亿的数值,而float的有效位数最大只有7位

类型转换规则:

​ 如果两个操作数中有一个是 double 类型, 另一个操作数就会转换为 double 类型。

​ 否则,如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型

​ 否则, 如果其中一个操作数是 long 类型, 另一个操作数将会转换为 long 类型。

​ 否则, 两个操作数都将被转换为 int 类型。

强制类型转换:

​ 除了上述的类型间合法转换,其他类型间的转换需要通过强制类型转换来完成。如double类型转成int类型。强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。

double x = 9.997;
int nx = (int) x; // nx is 9

​ 这样, 变量 nx 的值为 9。强制类型转换通过截断小数部分将浮点值转换为整型。如果想对浮点数进行舍人运算, 以便得到最接近的整数(在很多情况下, 这种操作更有用), 那就需要使用 Math_ round 方法:

double x = 9.997;
int nx = (int) Math.round(x) // nx is 10

tips:

​ 如果试图将一个数值从一种类型强制转换为另一种类型, 而又超出了目标类型的表示范围,结果就会截断成一个完全不同的值。例如,(byte ) 300 的实际值为 44。

四、运算符

&&、||

​ && 和丨| 运算符是按照“ 短路” 方式来求值的: 如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。如

果用 && 运算符合并两个表达式

expression1 && expression2

​ 而且已经计算得到第一个表达式的真值为 false, 那么结果就不可能为 true。因此, 第二个表达式就不必计算了。可以利用这一点来避免错误。例如, 在下面的表达式中:

x != 0 && 1 / x > x + y // no division by 0

​ 如果 x 等于 0, 那么第二部分就不会计算。因此,如果 X 为 0, 也就不会计算 1 / x , 除以 0 的错误就不会出现。

​ 类似地, 如果第一个表达式为 true,

expression1 || expression2

的值就自动为 true, 而无需计算第二个表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值