*java* 在Java中给Int类型的最大值+1 ,以及int与byte之前强转的例子

本文探讨了在Java中,当给int类型的最大值加1时导致的溢出问题,解释了即使将结果赋值为long类型也无法避免溢出的原因。同时,文章通过示例展示了int与byte类型转换的规则,包括在什么情况下需要进行强制类型转换以及不进行转换可能产生的后果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.给int最大值+1

public class Test1{
	public static void main(String[] args){
		//保存当前int的最大值,同理也有long maxValue
		int maxValue = Integer.MAX_VALUE+1;
		int minValue = Integer.MIN_VALUE+1;
		System.out.println(maxValue);
		System.out.println(minValue);
	}
}

给最大值+1或者给最小值-1,我们可以发现数据产生了溢出,因为超过了int的存储范围(2^31-1),如果我们把它换成long型是否就可以了呢?看看结果

public class Test1{
	public static void main(String[] args){
		//保存当前int的最大值,同理也有long maxValue
		long maxValue = Integer.MAX_VALUE+1;
		long minValue = Integer.MIN_VALUE+1;
		System.out.println(maxValue);
		System.out.println(minValue);
	}
}

运行发现结果还是溢出了,这是因为我们程序在运行时,是从右向左读的,等号右边的Integer.MAX_VALUE是int类型的变量,1是int类型的常量(Java中所有整型常量默认类型都是int),两个Int类型的数相加,结果自然还是Int类型,我们虽然给maxValue赋为long型,此时已经没有作用。因此我们需要给等号右边的数进行强转转换。代码如下:

public class Test1{
	public static void main(String[] args){
		long maxValue = Integer.MAX_VALUE+1L;		//在整型常量后加上字母L表示常量当前为long类型
		long minValue = (long)Integer.MIN_VALUE-1;  //将最小值强行类型声明为long型
		System.out.println(maxValue);			    //严格来讲不是强制类型转换										         //Java中的强转指的是大类型转为小类型	
		System.out.println(minValue);				//java中的强转指的是大类型转为小类型            
		}
}

在Java中小的数据类型与大的数据类型做数据运算时,小的数据类型会自动转换为大的数据类型。
eg:10+1L
大的数据类型转换为小的数据类型时必须强转,强转可能会丢失数据。

public class Test1{
	public static void main(String[] args){
		long maxValue = Integer.MAX_VALUE+1L;
		int num = (int)maxValue;  //将long强转成int
		System.out.println(num);
	}
}

2.int与Byte之间的强转
先来看一段代码,看看有没有问题。

public class Test1{
	public static void main(String[] args){
		byte b1 = 120;
		System.out.println(b1);
	}
}

等式从右向左,120为整型常量,默认为Int型,而b1是byte型,应该需要强转,看看运行结果。

在Java中,整型常量若在byte类型的保存范围之内(-128~127),可以直接赋值给byte变量,无需强转。若超过范围则会溢出。

若是一个整型变量在byte类型的保存范围内,将其赋值给byte,再看看结果。

public class Test1{
	public static void main(String[] args){
		int b = 120;  //将整型变量赋值给byte
		byte b1 = b;
		System.out.println(b1);
	}
}

若整型常量值超出byte范围必须强转,整型变量无论值是否在byte范围中,都需要强转。其他类型的数值,无论是否在范围内,都需要强转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值