JAVA整数类型的自动转换

/**
	整数类型的运算及自动转换
**/
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类型,所以是我们预想的值 :2147483648
		System.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);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值