java 自动类型转换和强制类型转换

自动类型转换

精度小的类型可以自动转换为精度大的类型

精度大小排序
char<int<long<float<double
byte<short<int<long<float<double
两条线,分别可以进行自动类型转换

char不会自动转为byte或者short

布尔型不进行转换

	char a = 'a';
    int b = 100;
    long c = 20;
    float d = 1.2f;
    double e = a+b+c+d;
    System.out.println(e);//218.1999969482422
    // 浮点数在内存中的存储与整数不同,所以计算后精度上存在细小的误差
	byte a = 10;
    short f = 15;
    int b = 100;
    long c = 20;
    float d = 1.2f;
    double e = a+b+f+c+d;
    System.out.println(e);//146.1999969482422
    // 浮点数在内存中的存储与整数不同,所以计算后精度上存在细小的误差

多种精度的类型数值进行运算时,会将所有成员自动转化为成员中最大精度的那个类型,再进行运算,最终结果的类型就是成员中最大精度的类型。(以下情况除外)
byte,short,char 这3个类型进行运算时转为int类型,运算后只能赋值给int或者比int精度更高的类型

	byte a = 1;
	short b = 2;
	short c = a + b; //报错
	int c = a + b;//3

如果+号两边有字符串,那么就是自动转化为字符串进行连接

int a = 100;
System.out.println("100"+a);//100100

强制类型转换

不符合自动转换类型的条件,可以进行强制类型转换

	float a = (float)1.124;
	
	int b = 100;
    byte a = (byte)b;
    System.out.println(a);
    float c = 3.1f;
    c = (float) (b+3.2);
    System.out.println(c);

强制类型转换的优先级较高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值