java的类型转换

本文介绍了Java中的类型转换,包括强制转换(如bytefromint)和自动转换(如double自动升级),强调了处理溢出、精度和JDK7新特性在类型转换中的注意事项。
摘要由CSDN通过智能技术生成

由于java是强类型语言,所以在进行一些计算时需要用到类型转换

低>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>高

beyt,short,char --> int --> long --> float  --> double

运算中不同类型的数据先转化为同一类型再进行计算

首先我们用代码来实现一下

int i=128;
byte c=i;

我们正常把i的值赋给byte 是会报错的,b需要一个byte类型但是我们给的是int类型,这个时候我们就需要强制转换了,我们要把i转换成byte类型,怎么转换呢我们用代码来实现一下

int i=128;
byte b=(byte)i;

 我们在需要转换的变量前面加个小括号里面再写上您想要转换的类型就可以了,我们来输出看一下

我们可以看到byte输出了一个-128,byte的最大值是127我们给它赋值一个128就会出问题,它的内存就溢出了,溢出后它的值就会变样子了,所以我们在进行转换的时候尽量要避免内存溢出的情况,这个就是我们的强制转换,强制转换的格式就是(转换的类型)变量名

我们的类型转换分为两种一种是强制转换一种是自动转换

强制转换:从高到低是需要进行强制转换的   高->低

自动转换:从低到高我们是不需要进行强制转换的,我们什么都不需要写它自动就转换了     低->高

我们用代码来实现一下自动转换

因为double是最高的所以是不需要进行强制转换的,它的结果输出为128.0因为double是小数

接下来我们来看一下注意点:

  1. 我们不能对布尔值进行转

  2. 不能把对象类型转换为不相干的类型
  3. 在把高容量转换到低容量的时候需要强制转换,反之不用动
  4. 在转换的时候可能存在内存溢出或者精度的问题
     

第四点我们可以通过代码来看一下

我们可以看到转换成整数类型后我们小数点后的数就没有了精度也就没有了

我们再来看一个char类型的转换

因为我们是低转高我们自动就转为了int 类型,所以我们第一个输出输出的是98数字a+1的值,第二次输出我们想要打印出字符类型就需要用到我们的强制转换把d强制转换为char类型,我们可以看到输出的是b,a+1是b所以也是没有问题的
 

还有我们在定义一个变量的时候如果我们要定义一个比较大的数我们是需要注意溢出的问题,我用代码给你们看一下JDK7的新特性

我们可以看到我每隔4个0之间用了下划线来分割这样看起来也是很清楚很多而且这个下划线不会被打印出来,我们可以通过代码输出运行来看下

我们再来计算下20×10亿看下会是什么结果         

我们可以看到并没有输出我们想的200亿而是输出了一个负数这是因为超出了int能存储的范围造成了内存溢出的情况,我们可以再用比int更大的一个类型来保存试下

我们可以看到输出的结果还是一样的,这是为什么呢,long的内存完全是够用的;

我们仔细来看一下,两个int类型相乘结果还是int类型,相乘完后我们才赋值给的long类型,我们转换之前就出现了问题所以结果肯定是不对的,我们就需要把变量money或者变量a其中一个转换为long类型这样子计算的结果就会是long 类型我们用代码来看一下

我们可以看到我们成功的输出了200亿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值