Excel不相邻列如何打印在一起-英雄云拓展知识分享
147
2023-10-25
【摘要】 本书摘自《JAVA服务端研发知识图谱》一书中第1章,第2节,由何为、迟文恒 编著。
1.2.3 类型转换与越界
表示数值的基本类型之间是可以进行相互转换的,当取值范围比较小的类型向较大类型转 换时可以获得更高的精度或者更大的存储空间;当取值范围比较大的类型向较小的类型转换时,往 往意味着丢失或者其他问题。 boolean 是不能和其他类型进行转换的。下面用几个例子来说明这些 问题。
(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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~