测试Java中的long,int基本类型,以及比较

54 篇文章 0 订阅
34 篇文章 1 订阅

标题:测试Java中的long,int基本类型,以及比较

可以先参考blog:补码,反码运算

long c = -2147483648 - 1; //不会自动转型成long,而是相当于算完后,先赋给int的变量,再强转为long 所以c: 2147483647
原因见上blog

完整示例:

没有手动加L/l,则就是int,若将没有加L/l的数字赋给long,则还是相当于将这个数字保存到int类型,再转成long,所以此数字没有在int的范围就算越界了。
@Test
	public void test02() {
	测试一、一个数赋给long,若此数字后面没有加L/l,则还是int -> long,故此数若超过了int范围,则会出现溢出
		int a = -2147483648;
//		int a = -2147483649;// int 的文字 2147483649 超出了范围
//		long b = -2147483649;// 不会自动转型int 的文字 2147483649 超出了范围  important 
		long b = -2147483649L;
	测试二、两个int类型的相减赋给long,若没有加L/l则还是相当于将结果保存给一个int,再把int赋给long
		long c = -2147483648 - 1;  //不会自动转型 c: 2147483647
		long c2 = -2147483648L - 1L;//c2: -2147483649
		long c3 = -2147483648 - 1L;//c3: -2147483649
		
		System.out.println("a: " + a);
		System.out.println("b: " + b);
		System.out.println("c: " + c);
		System.out.println("c2:" + c2);
		System.out.println("c3:" + c3);
	}
/**
 * [-2147483648,2147483647]
 * 补码,反码的运算
 * @author dell
 *
 */
public class TestComplementInverseCode {
		@Test
		public void test() {
			int k = -2147483648;//小于
			int k2 = 2147483647;
//			long k = -2147483648; //大于
//			long k2 = 2147483647;
			
//			if((k2 - k) > 1) {
//				System.out.println("大于");
//			}else {
//				System.out.println("小于"); 
//			}
			

		}
		
		@Test
		public void test02() {
			int k = -2147483648;//小于
			int k2 = 2147483647;		
			
			System.out.println("k2 - k:" + (k2 - k));//-1  =>2147483647 +2147483648(这个数表示不了,)  => 2147483647 -2147483648 = -1
			long n = (long)k2 - k;//大于  将int  强制转成long
			long m = 1L;

//			if(n > m) {
//				System.out.println("大于");
//			}else {
//				System.out.println("小于");
//			}

		}
		
		@Test
		public void test03() {
			int k = 2147483646;//小于,
			int k2 = 2147483647;		
			
			long n = (long)k2 - k;//大于  将int  强制转成long
			long m = 1L;

			if(n > m) {
				System.out.println("大于");
			}else {
				System.out.println("小于");
			}

		}
		//long - int 会强制转成long - long
		@Test
		public void test04() {
			int k = -2147483648;//小于
			long k2 = -2147483648; //大于
			
			long a = k - 1;//a:2147483647
			long b = (k2 - 1);//b:-2147483649
			
			System.out.println("a:" + a);
			System.out.println("b:" + b);

		}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值