04Java学习笔记——数据类型转换

当数据类型不同的变量进行赋值时,会发生数据类型转换。
数据类型转换有两种自动类型转换强制类型转换

自动类型你转换(隐式)

1.特点:代码不需要进行处理。
2.规则:数据范围从小到大。

public class Demo01DataType{
	public static void main(String[]args){
		System.out.println(1024);
		
		long num1 = 100;
		System.out.println(num1);
		 
		double num2 = 2.5F;
		System.out.println(num2);
		
		float num3 = 30L;
		System.out.println(num3);
		//long -->float,float的数据范围要大于long类型的数据范围,符合由大到小的规则
	}
}

强制类型转换(显性)

1.特点:代码需要进行特殊处理,不能自动完成。
2.格式:范围小的类型 范围小的变量 = (范围小的类型) 原本范围大的变量
3.注意事项
强制类型转化一般不推荐使用,因为有精度损失,数据溢出。
byte、short、char都可以发生数学运算,在运算时会首先提升成int,然后运算。
boolean类型不能进行数据类型转化。

// 强制类型转换
public class Demo02DataType{
	public static void main(String[]args){
		int num1 =(int) 10L;
		System.out.println(num1);
		// 正确
		int num2 =(int) 6000000000L;
		System.out.println(num2);
		// 不报错 但显示1705032704
		// 如果数据本来就超过了容器的范围,那么就会装不下,出现溢出
		
		int num3 =(int) 3.5;
		System.out.println(num3);
		// 3 不是四舍五入!
		
		char zf1 = 'A';
		int zf2 = (int) 'A';
		zf1++;
		System.out.println(zf1);//B
		System.out.println(zf2);//65
		// 计算机底层有一个数字(二进制),来表示字符A(65)
		//一旦char类型进行数学运算,那么字符就会按照一定的规则(ASC编码)翻译成数字进行运算
		
		
		byte num4 = 40;
		byte num5 = 50;
		// byte result1 = num4+num5;报错
		// byte + byte-->  int + int  -->int
		// 而result1是byte类型,强制转换,报错内容为:int转化为byte可能会有损失
		// so
		int result1 = num4+num5;
		System.out.println(result1);
		
		short num6 = 60;
		// byte + short --> int + int -->int
		short result2=(short)(num4+num6);
		// int 强制转换位short:注意必须保证实际大小没有超过类型范围,避免溢出
		System.out.println(result2);
	}
}

在这里插入图片描述
tip:
逻辑上讲
byte num4 = 40;
byte num5 = 50;
byte result1 = num4+num5;
//byte + short --> int + int -->int
int 90转化为byte类型没有超出byte的最大范围,但是系统还是会提示报错
结论:强制类型转化要用对应的格式来操作,报错与是否溢出无关。
byte result1 = (byte)(num4+num5);
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值