您的位置 首页 > 数码极客

short类型—c语言short类型…

1、自动类型转换

含义:

容量小的数据类型自动转换成容量大的数据类型

自动数据类型转换

//自动数据类型转换 public class Variable { public static void main(String[] args) { byte b = 8 ; short s = b; Sy(s); //控制台输出8 int i = s; Sy(i); //控制台输出8 long l = i; Sy(l); //控制台输出8 char name = '是'; int i1 = name; Sy(i1); //控制台输出26159 float f = 10f; double d = f; Sy(d); //控制台输出10.0 } }

注意:

  • byte,short,int在做计算时,会转换成int类型;
public class Variable { public static void main(String[] args) { short s1 = 3; short s2 = s1 + 1; } }

以上代码在书写时编译工具会报错,公司的笔试中也总是能看到这个问题,乍一看,没什么问题,就是一个3+1的加法,但是byte,short,int在做计算时,会转换成int类型,也就是说,在s1+1时,实际上是int型的结果,这时如果用short类型去接收,就是大范围的数据类型转小范围的数据类型,编译器也会给出错误提示:Type mismatch: cannot convert from int to short,解决方法就是用一个int类型的变量接收或者强制转换。

  • 如果把int转换成float类型,或者long转换成double,即图中虚线部分,不需要强制转换,但是可能会丢失精度
public class Variable { public static void main(String[] args) { int i = 345236236; float f = i; Sy(f); //控制台输出3.45236224E8 double d = i; Sy(d); //控制台输出3.45236236E8 long l = 9223720368545807L; double d1 = l; Sy(d1); //控制台输出9.223720368545808E15 } }

这和我们预期的输出结果不符合,之所以会出现精度丢失的问题,是因为byte,short,int,long,属于精确值,而float和double是属于近似值,精确值转近似值会出现精度丢失的问题,至于为什么会产生精度丢失,涉及到进制的转换,不深入剖析,在实际开发过程中避免即可。由于float和double是近似值,所以在做一些需要精确的数据比如货币、股票的操作时,不建议使用float或double,Java提供了专门处理这种数据的类。


2、强制类型转换

含义:

容量大的数据类型转换成容量小的数据类型需要添加强制类型转换;

小容量数据类型 变量名 = (小容量数据类型)(大容量数据类型的操作如加减乘除)

public class Variable { public static void main(String[] args) { short s1 = 3; short s2 = (short)(s1 + 1); //强制类型转换,int类型转换成short类型 Sy(s2); } }

在需要转换的数据前面指定该数据类型,就是强制类型转换,但是强制类型转换可能会造成精度的降低或数据溢出,boolean类型不能转换成其他任何数据类型。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“short类型,c语言short类型,short类型占几个字节,short类型取值范围,short类型数据”边界阅读