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

自动类型转换

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

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

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);

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

你可能感兴趣的:(java,java,数据结构,算法)