不可思议的死循环(一)

我们一般都要在代码中都是要避免死循环的,但是今天我要让大家把下面的for循环代码变成一个死循环,这有点不可思议吧,哈哈。我们的要求死循环的代码如下:

while (i <= j && j <= i && i != j) {
}
我们要上面的代码变成一个死循环,感觉是不是 有点不可思议吧,我们发现要想i<=j&&j<=i这个就只有i=j了吧?但是后面又有一个条件就是i!=j,这顿时给我们当头一棒,我们还有什么办法来让这个变成一个死循环吗?问题既然能够被提出来我们就可以找到解决问题的办法。我们知道即使生成两个相同的对象,他们进行“==”比较的时候返回的值始终为false,我们就可以利用进行这个上面的那个while循环了。我们可以想到我们经常使用的Integer,我们可以定义两个一样的Integer对象。下面我们来看下面的代码可以让上面的while循环变成一个死循环。

package test32;

public class test01 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Integer i = new Integer(1);
		Integer j = new Integer(1);
		//上面的代码可以满足,i<=j && j<=i,也就是i==j
		if(i<=j && j<=i)
		{
			System.out.println("i<=j && j<=i :" + "true");
		}
		else
		{
			System.out.println("i<=j && j<=i :" +"false");
		}
		System.out.println("----------分割线-------------");
		
		if(i!=j)
		{
			System.out.println("i!=j :"+"true");
		}
		else
		{
			System.out.println("i!=j :"+"false");
		}
		/*
		 * 我们运行上面的代码括得到下面的输出结果:
		 * 		i<=j && j<=i :true
		 *		----------分割线-------------
		 *		i!=j :true
		 *我们发现两次运行的结果的都是true
		 *这样就满足我们死循环的条件了。它永远都是true。
		 *
		 */
		
	}

}

像这样的问题 ,我们其实在编程中很少用到的。但是这个在面试护着笔试的时候就很容易的被问到,当时可能会盟了,所以我们就要平时多积累这样的小问题,到面试或者笔试的时候就会迎刃而解了。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值