java的基本数据类型之间的运算规则

/*
基本数据类型之间的运算规则
只讨论7种基本数据类型变量之间的运算,不包含boolean类型

1,自动类型提升
当容量小的数据类型变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型
此时的容量大小指的是表示数的范围大小,不是占用字节的大小,比如float(4个字节) 的容量大于long(8个字节)的容量
byte–>short–>int–>long–>float–>double
byte,char,short–>int–>long–>float–>double
byte,char,short三个互相做运算时输出都是int或更大的类型
2,强制类型转换
是自动类型提升运算的逆运算
1, 需要使用强转符号()例如long l1 = 112.9L;short s1 = (short)l1; 输出为112,只取整数部分。
2,使用强制类型转换,可能会出现精度损失。

注意
1,编码情况
long 1 = 122;也可以编译通过,会默认为int类型
long l2 = 12345673333;编译不通过,超出int范围,需要末尾加L,
float f1 = 12.3;编译失败,必须加F,因为默认为double类型。
2,编码情况2
byte b = 12;
byte b1 = b + 1;编译失败,数字1为整数型常量,默认为int型,小数型默认为double

*/

 class VariableTest2{
	public static void main(String[] args) {

		byte b1 = 2;
		int i1 = 1278;
		//byte b2 = b1 + i1
		//编译不通过,因为int范围大
		int i2 = b1 + i1;
		long l1 = b1 +i1;	
		System.out.println(i2);
		System.out.println(l1);
		float f1 = b1 + i1; //整数型数值运算结果可以定义为浮点型,系统输出自动加小数点
		System.out.println(f1);
		short s1 = 123;
		double d1 = s1;//可以将整数型直接转换为浮点型,后面自动加小数点
		System.out.println(d1);
		char c1 = 'a';// a 对应的数值为97
		int i3 = 10;
		int i4 = c1 + i3;//char只能容纳一个字符,所以i4不能为char类型
		System.out.println(i4);
	}
}
 class VariableTest3{
	public static void main(String[] args) {
        long l1=123L;//数值没有超出long范围可以不加L,也能编译,会自动转换为int类型
		short s1 = (short)l1;//数值没有超出short范围,强制转换后精度没有损失。
		System.out.println(s1);
		double d1 = 12.9;
		int i1 = (int)d1;//执行截断操作,结果只取整数部分,不是四舍五入
		System.out.println(i1);//输出12,损失小数点,精度损失
		int i2 = 128;
		byte b1 = (byte)i2;
		System.out.println(b1);//输出-128跟二进制规则有关,损失精度。
		long l2=128456744453453L;
		int i3 = (int)l2;
		System.out.println(i3);
		short s2 = (short)l2;
		System.out.println(s2);
		byte b2 = (byte)l2;
		System.out.println(b2);

	}
}
发布了45 篇原创文章 · 获赞 1 · 访问量 2184

猜你喜欢

转载自blog.csdn.net/wisdomcodeinside/article/details/103735870