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的字符串,然后再转变回来