ad

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.2.3 类型转换与越界

admin 147 2023-10-25

【摘要】 本书摘自《JAVA服务端研发知识图谱》一书中第1章,第2节,由何为、迟文恒 编著。

1.2.3 类型转换与越界

表示数值的基本类型之间是可以进行相互转换的,当取值范围比较小的类型向较大类型转 换时可以获得更高的精度或者更大的存储空间;当取值范围比较大的类型向较小的类型转换时,往 往意味着丢失或者其他问题。 boolean 是不能和其他类型进行转换的。下面用几个例子来说明这些 问题。

《JAVA服务端研发知识图谱》_让你更懂Java后台研发_1.2.3 类型转换与越界

(1)类型转换:以int为初始数据类型,赋整数的最大值,然后向其他类型转换。代码如下:

public static void testConversion(){

inti=Integer.MAX VALUE;

System.out.println("max int="+i);

shortj=(short)i;

System.out.println("max int to short="+j);

long k=i

System.out.println("max int to long ="+k);

float x=i;

System.out.println("max int to float="+x);

double y=i

System.out.printin("'max int to double+"+y);

运行结果如下:

max int=2147483647

max int to short=- 1

max int to long=2147483647

max int to float=2. 14748365E9

max int to double+ 2. 147483647E9

可见,当 int转为 short 的时候,存在风险;当 int 转为 long时一切正常;当int 转为 float 时 数据会丢失一部分;当 int转为 double 时一切正常。

(2)越界:观察几种类型已经为可表示的最大值时,再进行加运算会发生什么;或者几种 类型已经为可表示的最小值时,再进行减运算会发生什么。代码如下:

public static void testOutRange(){

inti=Integer.MAX VALUE;

System.out.println("max i=i+1;

System.out.println("max

intj=Integer.MIN VALUE;

System.out.println("min j=j- 1;

System.out.println("min

int="+i);

int+1="+i);

int="+j);

int- 1="+j);

double x=Double.MAX VALUE;

System.out.println("max double="+x);

x=x+Double.MAX VALUE;

System.out.printin("max double + max double="+x);

double y=-Double.MAX VALUE;

System.out.println("-max double="+y);

y=y-Double.MAX VALUE;

System.out.println("- max double-max double="+y);

越界的运算往往出现意想不到的结果,虽然实际使用这些类型时,只要正确地分配了对应 的类型(例如不要给手机号分配 byte 类型),一般都不会出现这种情况。但是如果代码编写中出 现了错误,还是会遇到越界的情况。

(3)boolean 的使用: boolean不可以通过其他类型转换而来(与C++ 不同), boolean 的值只 能是true 或者 false。

在上述代码中,注释掉的部分是错误的使用方法, 一定要注意。

(4)运算中的转换与赋值:当不同类型同时参与一组运算时,往往伴随着类型转换,而类 型的转换都是向上(更大)转换。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:阅读《时空大数据与云平台 理论篇》_走进云的世界_2.2.1 T-C-V 软件结构提出
下一篇:打开《Python入门与实战》_一步步学会Python_第5章 数据结构
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×