数据类型强转--Java

 时间:2024-10-27 03:27:52

数据类型强转方法,以及一些基础理论

数据类型强转--Java

工具/原料

编译器,例如eclipse,myeclipse

Java

电脑

方法/步骤

1、首先是Java拳婊招稹语句中的数据类型首先是:byte:因为在计算机中是以字节bit储存的,bit包含数据0和1(详情可以了解计算机筛觐子裆发展史)。我们一个byte是Java中最小的一个类型。然后byte叫做一个字节,一个字节包含8个字符(bit),但是由于第一位的字符0和1是属于符号位,用来判断正负值,因此转换的最大二进制就是负的2的7次方,2的7次方-1,也就是[-128,127]。对于以上范围的疑问:为什么是-128,而不是-127,因为补码原则:补码原则是负的在其反码的基础加1,正数不变。参考以下:因为第一位是符号位,所以二进制就只有7位,如以下:(0)1111111=2的6次方+2的5次方+2的4次方+2的三次方+2的二次方+2的一次方+2的0次方=127;-{(0)1111111}=【(1)000000(1-1)】=-{(2的6次方+2的5次方+2的4次方+2的3次方+2的2次方+2的1次方)+2的0次方}=-128然后是short:你可以把它看成可以储存2个字节,也就是负的2的15次方到2的15次方-1,也就是[-32768,32767]然后是int,看成两个short,就是负的2的32,2的32次-1,值域范围[-2146147483648,2146147483647]其次是long,看成两个int,同理可得值域[-9223372036854775808,9223372036854775807]然后有float,单精度浮点数,同上看成两个long,不过-2^128~+2^128(-1)打括号是因为几乎可以忽略不计最后是double,双精度浮点数,同上,两个float范围-2^256~+2^256(-1)然后就是其他类型,如:char:字符型,值域范围为所有字符,例如英文字母,汉字等等Boolean:逻辑型,只包含逻辑值0和1就是(true)和(false)通过以上我们可以简单排序:byte,short,int,long,float和double

2、为什么要强转:因为我们在做运算时可能需要的值域范围超过原来的值域,或者为了让计算机计算时更加迅速快捷,节约资源,减少成本

3、Java中强转公式:case1:由小值域到大值域:这稍僚敉视个最简单,整型由小到大就不可能超限(超出值域范围);例子如下:publicclassyanshi{publicstatic惺绅寨瞀voidmain(String[]args){bytebyteValue=127;intintValue=0;intValue=byteValue;//直接赋值转换}}为了方遍以下我直接写函数体,就是body部分case2:隐式转换条件:任一浮点数,例如1.1BODY体floatfloatValue=1.1;//这是错误的原因:因为1.1是属于double型的浮点数,所以不能直接赋值,这里涉及到的是隐式转换应该改为:floatfloatValue=1.1f;//这里的f告诉了编译器这是float数,而不是默认的doublecase3:浮点数由小值域到大值域BODY体floatfloatValue=1.1f;doubledoubleValue=0;doubleValue=floatValue;//这是错误的原因:因为在计算机中浮点数是不确定的,等于是一个随机数,只能是近似的和目标值相近,这里的body体不能达到无损转换,如要了解详情可以看一下数据储存原理,这里可以稍微提一下:转换为二进制时会有精度丢失,再转换为十进制同样会有精度丢失,毕竟计算机只能按照0,1储存应该改为:floatfloatValue=1.1f;BigDecimalzhuanhuan=newBigDecimal(String.valueOf(floatValue));//java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算(引用于百度百科),在这里我们把floatValue先变成一个字符串进行保存计算,并对zhuanhuan实例化doubledoubleValue=zhuanhuan.doubleValue();或者 floatfloatValue=1.2f; doubledoubleValue=Double.parseDouble(String.valueOf(floatValue));//用了parse函数,转换为字符串再转回来case4:整型数由大值域转换成小值域BODY体intintValue=1;longlongValue=2;intValue=(int)longValue;//这一步是转换整数型大值域转换成小值域的格式是:目标格式变量=(目标格式)转换变量;case5:浮点数由大值域转换成小值域BODY体doubledoubleValue=1.1; floatdoubleValue=Float.parseFloat(String.valueOf(doubleValue));同理;原因:有人或许会奇怪公式都一样,哪里有强转,但实际上仔细研究下列公式可以发现原因公式:目标值+强转变量=目标值大写关键字.parse目标值大写关键字(String.valueOf(强转目标);我们可以看见,Java先将其变为了一个数字形式的String的字符串,然后再转变回来

数据类型强转--Java

在win10中的画图3D里调整画布的大小 怎样将文件转换成xps文件 圆梦志愿APP怎么修改成绩 华南农业大学教务系统重修选课教程 火影忍者手游-人物-漩涡鸣人九尾查克拉
热门搜索
君临臣下漫画 绿色的图片 黑子的篮球漫画 文具盒图片 榆叶梅图片