JAVA数据类型转换

类型转换是一个值从某种类型转换为另一种类型的执行过程
低精度数据类型向高精度类型转换时,永远不会出现溢出、精度丢失的问题,但是高精度数据类型向低精度数据类型转换则必然出现精度丢失,并且转换失败,Long长整数类型转换为float、double精度类型时就会出现精度丢失。
 数据类型转换共有两种方式,即隐式转换和显式转换
隐式类型转换
 从低级类型向高级类型的转换,系统将自动执行,程序员无须进行任何操作,这种类型的转换称为隐式转换,隐式转换的整型、实型、字符型数据类型可以混合运算,运算中,不同的类型数据先转化为同一类型,然后进行运算。
 隐式转换会涉及到基本数据类型转换,但是不包括逻辑类型与字符类型。
隐式代码部分

			//使用int类型变量为float型变量赋值
			//此时int类型变量将隐式转化为float类型变量
			int x=50;   //声明int变量 x
			float y=x;	//将x赋值给 y
			system.out.println(y); 	//打印 y

结果为:

			50.0

显式类型转换
 当把高精度变量的值赋给低精度变量时,必须要用显式类型转换,显式类型转换又称为强制类型转换,强制类型转换可能导致溢出或者精度丢失。
 溢出主要是内存大小的问题,并且要考虑数值的大小,还要考虑数值是否有可能会存在溢出。
大类型数值才能感受到精度丢失,数值过小将无法感受到精度丢失。
显式代码部分

			int a=(int)45.23;
			System.out.println("a的值="+a);	//输出a的值为45
		
			long b=(long)456.6F;
			System.out.println("b的值="+b);	//输出b的值为456
		
			int c=(int)'d';
			System.out.println("c的值="+c);	//输出c的值为100

结果为:

			a的值=45
			b的值=456
			c的值=100

 当前执行显示类型转换会出现精度丢失,除了boolean类型以外的其他基本数据类型之间的转换,全部都能以显式类型转换的方法进行转换。
 当把一个整数赋值给一个byte、short、int、long型变量时,不可以超出这些变量的取值范围,否则只能使用强制类型转换来进行转换。
如:byte b=(byte)129;

			byte b=(byte)129;
			system.out.println("b的值="b);		//输出b的值为-127

结果为:

			b的值=-127

 Byte型最大值为127,如果超过了这个范围,那么就会出现溢出,那么就涉及到反码、补码、原码的问题了(正数的反码和补码都等于源码)。
 负数的反码是符号位保持变,其余位取反,负数的补码是在其反码的基础上+1,那么可以理解位补码到反码-1,(负数溢出变为最大值,正数溢出变为最小值)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值