JAVA整数类型的自动转换

来源:互联网 发布:拍动态图片软件 编辑:程序博客网 时间:2024/06/16 16:18
/**整数类型的运算及自动转换**/class Demo2{public static void main(String[] args){byte a = 100;// byte b = a+1; 这个是错误 的,因为byte进行运算时,会升级为int类型,int类型无法自动转换为byte类型int b = a+1;System.out.println(b);short c = 100;// short d = c + 1; 这个也是错误的,short进行运算时,也会自动升级为int类型,而int类型不能自动转换为short类型int d = c + 1;System.out.println(d);char e = 100;// char g = e + 10;这个也是错误 的,char 类型参与运算也会自动 提升为int类型。char之所以能进行整型运算,是因为其acscii对应的值 为数字。int f = e + d;//char 类型参与运算也会自动 提升为int类型,所以下面的这句是正确的System.out.println(e);//int h = 2000000000000; 是错误 的,因为赋值 超过了int所能容纳的最大值int h = 2000000000;h = h+1000000000;//最后得出的值为负数,因为溢出了。System.out.println(h);// long g= 2147483647 +1;此得出的结果是-2147483648,因为在运算时以int类型运算的,运算结果溢出了,成了负数,所以会得出一个负数long g= 2147483647 +1L;//因为1L是long类型,int类型与long进行运算,会得出long类型,所以是我们预想的值 :2147483648System.out.println(g);/*注意:所有的类型都有最大值,一旦运算时超过了最大值,就会损失精度,可能会变成负数值。在定义变量赋值时,不可超过指定类型值的最大值 与最小值,因为超过了就不在是此种类型的值了,就变成其它类型的值了byte short char 进行运算时都 会自动转换为int类型。如果使用常量进行运算,只要结果的值 不超出定义变量的最大值或最小值,就不会报错还要注意:在运算时超出了int的最大值 ,也不会升级long或float/double任何 的整数类型与long进行运算,都会得到long类型的值 */byte a1 = 8+10;System.out.println("这个是正确的,因为是常量相加,也没有超过此类型的最大值或最小值:"+a1);short a2 = 100 + 2000;System.out.println("这个也是正确的:"+ a2);char a3 = 44+21;System.out.println("这个也是正确的:"+a3);}}

0 0
原创粉丝点击