Java学习笔记001——数据类型转换细节

//数据类型转换细节

//创建一个ConvertDetail类
public class ConvertDetail {
	//创建一个main主方法
	public static void main(String[] args) {
		//数据类型自动转换细节
		//细节1:不同数据类型混合运算时会自动转换成最高的精度进行运算
        //自动转换的两条路线:
        //char->int->long->float->double
        //byte->short->int->long->float->double
        //例:
		int a = 1;
		float b = 2.1f;
		double c = 3.2;
		//int sum = a + b + c; //报错
		// float sum1 = a + b + c; //报错
		double sum1 = a + b + c; //正常运行
		System.out.println(sum1); 
		//输出:6.2999999046325685
        //单精度转双精度的时候,双精度会对单精度进行补位,导致出现偏差。

		//细节2:精度高的数据类型不能赋值给精度低的数据类型
		//而精度低的数据类型能赋值给精度高的数据类型,例:
		//int d = 1.1; //报错,1.1为double型
		//float d = 1.1; //报错,1.1为double型
		double d = 1.1; //正常运行
		double e = 1; //正常运行,1为int型
		double f = 1.1f; //正常运行,1,1f为float型
		System.out.println(d); //1.1
		System.out.println(e); //1.0
		System.out.println(f); //1.100000023841858

		//细节3:当byte char short参与运算时,数据类型自动转换成int型,例:
		byte i = 1;
		char j = 2;
		short k = 3;
		//byte sum2 = i + j + k; //报错,从int转换到byte可能会有损失
		//char sum2 = i + j + k; //报错,从int转换到char可能会有损失
		//short sum2 = i + j + k; //报错,从int转换到short可能会有损失
		int sum2 = i + j + k; //正常运行
		//相同类型(三种内)相加也会报错
		byte l = 1;
		//byte sum3 = i + l; //报错,从int转换到byte可能会有损失
		int sum3 = i + l; //正常运行

		//细节4:boolean型不参与类型转换,例
		boolean m = true;
		//double n = m; //报错,不兼容的类型: boolean无法转换为double

		//细节5:(byte short)和char不能相互转换,例
		byte o = 1;
		short p = 2;
		char q = 3;
		//char r = o; //错误: 不兼容的类型: 从byte转换到char可能会有损失
		//char s = p; //错误: 不兼容的类型: 从short转换到char可能会有损失
		//byte t = q; //错误: 不兼容的类型: 从char转换到byte可能会有损失
		//short u = q; //错误: 不兼容的类型: 从char转换到short可能会有损失

		//细节6:自动提升原则,表达式结果中的的类型自动提升为操作数中最大的类型
		//与细节1类似

		//数据类型强制转换细节
		//细节1:高精度向低精度数据类型转换时,需进行强制转换
		//加上 (目标数据类型) 即可,但要注意此举可能会丢失数据,例
		int v = 127;
		byte w = (byte)v;
		System.out.println(w); //输出:127
		int x = 130;
		byte y = (byte)x;
		System.out.println(y); //输出:-126

		//细节2:强制转换只对最近的操作数有效,往往会使用小括号提升优先级,例
		//int z = (int)3 * 2.1 + 1 * 1.1; //错误,(int)3为int,但(int)3 * 2.1 -> double
		int z = (int)(3 * 2.1 + 1 * 1.1);
		System.out.println(z); //输出7,double7.4转换后丢失数据变为int7

		//细节3:byte short char参与运算时,当作int型处理,同自动转换细节3
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值