java数据类型强转_数据类型强转--Java

Java中强转公式:

case 1:由小值域到大值域:

这个最简单,整型由小到大就不可能超限(超出值域范围);

例子如下:

public class yanshi{

public static void main(String[] args){

byte byteValue=127;

int intValue=0;

intValue = byteValue;//直接赋值转换

}

}

为了方遍以下我直接写函数体,就是body部分

case 2:隐式转换

条件:任一浮点数,例如1.1

BODY体

float floatValue = 1.1;//这是错误的

原因:因为1.1是属于double型的浮点数,所以不能直接赋值,这里涉及到的是隐式转换

应该改为:

float floatValue=1.1f;//这里的f告诉了编译器这是float数,而不是默认的double

case 3:浮点数由小值域到大值域

BODY体

float floatValue=1.1f;

double doubleValue=0;

doubleValue=floatValue;//这是错误的

原因:因为在计算机中浮点数是不确定的,等于是一个随机数,只能是近似的和目标值相近,这里的body体不能达到无损转换,如要了解详情可以看一下数据储存原理,这里可以稍微提一下:转换为二进制时会有精度丢失,再转换为十进制同样会有精度丢失,毕竟计算机只能按照0,1储存

应该改为:

float floatValue = 1.1f;

BigDecimal zhuanhuan = new BigDecimal(String.valueOf(floatValue));//java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算(引用于百度百科),在这里我们把floatValue先变成一个字符串进行保存计算,并对zhuanhuan实例化

double doubleValue= zhuanhuan .doubleValue();

或者

float floatValue = 1.2f;

double doubleValue = Double.parseDouble(String.valueOf(floatValue)) ;

//用了parse函数,转换为字符串再转回来

case 4:整型数由大值域转换成小值域

BODY体

int intValue = 1;

long longValue=2;

intValue=(int)longValue;//这一步是转换

整数型大值域转换成小值域的格式是:

目标格式变量=(目标格式)转换变量;

case5:浮点数由大值域转换成小值域

BODY体

double doubleValue = 1.1;

float doubleValue = Float.parseFloat(String.valueOf(doubleValue)) ;

同理;

原因:有人或许会奇怪公式都一样,哪里有强转,但实际上仔细研究下列公式可以发现原因

公式:

目标值+强转变量=目标值大写关键字.parse目标值大写关键字(String.valueOf(强转目标);

我们可以看见,Java先将其变为了一个数字形式的String的字符串,然后再转变回来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值