复习笔记4 比较运算符

public class Test5
{
	public static void main(String[] args)
	{
		//比较运算符
		int x = 5;
		System.out.println(x > 5);
		System.out.println(x < 5);
		System.out.println(x == 5);
		System.out.println(x != 5);
		System.out.println(x >= 5);
		System.out.println(x <= 5);
		//判断左边的对象属于右侧的类型
		System.out.println("asd" instanceof String);
		System.out.println("========================================>");
		
		//逻辑运算符
		// & 逻辑与
		//当两侧都为真时为真
		//当有一个为假时为假
		//那么考虑一个问题,如果每次我们都需要
		//进行左右两边的对比,是不是很慢呢
		System.out.println(true & true);
		System.out.println(true & false);
		System.out.println(false & true);
		System.out.println(false & false);
		System.out.println("========================================>");
		//&& 逻辑与的短路
		//由逻辑与的特性可以直到,一个为假就为假
		//在考虑程序由左到右运算,那么第一个为假
		//是不是就不用看右边了?
		//&&运算符的对比 & 会提高一点点效率,但
		//仅在第一个为假时
		System.out.println(false && true);
		//这个虽然有一个假,但也必须比较两个值
		//程序在拿到左边真时并不知道后边是假,
		//所以这里t && f 和 t & f 是一样的
		System.out.println(true && false);
		System.out.println("========================================>");
		
		
		// | 逻辑或
		//跟 & 正好相反
		//当一个为真时就为真
		//当都为假时才为假
		System.out.println(true | true);
		System.out.println(true | false);
		System.out.println(false | true);
		System.out.println(false | false);
		System.out.println("========================================>");
		
		// || 逻辑或的短路
		// 跟上边那个一样,当第一为真时,不看后边
		System.out.println(true || false);
		System.out.println("========================================>");
		
		// ! 逻辑非
		//非真为假,非假为真
		System.out.println(!true);
		System.out.println(!false);		
		System.out.println("========================================>");
		
		// ^ 异或
		//两个相同时为假,不同时为真
		System.out.println(true ^ true);
		System.out.println(true ^ false);
		System.out.println(false ^ true);
		System.out.println(false ^ false);
		System.out.println("========================================>");
		
		
		//单个& |由于效率问题,基本不会用到
		//这一现象仅在逻辑上,也就是布尔运算
		//判断x>2 并且 x<4
		// & 方式
		x  = 1;
		if(x > 2 && x < 4)
		{
			// code ...
		}
		//该表达式与上边的是一样的
		if(x > 2)
		{
			if(x < 4)
			{
				// code ...
			}
		}
		//观察这个代码,如果要合并的话怎么做?
		//还像上边那样是否还可以呢?
		if(x > 2)
		{
			if(x < 4)
			{
				// code ...
			}
			else 
			{
				// code ...
			}
		}
		//仔细观察,发现代码不对,为什么呢?这里
		//的else里,包括了x<3 和 x>3,而我们要的
		//else是只要x>3
		if(x > 2 && x < 4)
		{
			// code ...
		}
		else 
		{
			// code ...
		}
		//这样虽然正确,但达不到我们的预期目的,也
		//就是说合并不了,这个问题实际上是作用域的
		//问题,合并逻辑表达式必须要内部作用域的
		//表达式是唯一作用域
		if(x > 2 && x < 4)
		{
			// code ...
		}
		else if( x > 3)
		{
			// code ...
		}
		//逻辑表达式的合并要考虑2方面内容,第一是否
		//内部作用域唯一,第二,是否其他的作用域会被
		//扩展,也就是说以后会用的
		System.out.println("========================================>");
		
		//考虑一个问题,这个表达式什么情况下进if?
		//是真的话进if,假进else对吧,那么我想反
		//过来怎么办?只能把表达式变成x<=5?
		x = 6;
		if(x > 5)
		{
			// code ...
		}
		else
		{
			// code ...
		}
		//逻辑非就相当于把你逻辑调换过来
		//就像中国开车右侧行驶,有些国家
		//却是左侧行驶一样
		if(!(x > 5))
		{
			// code ...
		}
		else 
		{
			// code ...
		}
		//假设我们用bool表示电源的开关,默认是关闭的
		//那么这个功能应该怎么写?
		boolean bool = false;
		//看起来写的不错,没有问题,但是不是有点麻烦?
		//一个应用程序中的bool标识符很多,表示很多东西
		//如果都这样写是不是会累死?
		if(bool)
		{
			//关闭电源的代码
			bool = false;
		}
		else 
		{
			//打开电源的代码
			bool = true;
		}
		//我们知道电源开关就两种状态,开和关,所以才用
		//布尔来表示,而每次按下开关,电源的状态是取非
		//这里的逻辑非也算一种简便用法
		if(bool)
		{
			//关闭电源的代码
		}
		else 
		{
			//打开电源的代码
		}
		bool = !bool;
		System.out.println("========================================>");
		
		//是人都知道同性恋必须是同性在一起对吧?谁反对?
		//假设我们用true表示男人,false表示女人
		//那么我们现在是民政局,如果两个人p1 和 p2 不是
		//同性恋我们允许他们结婚,如果是同性恋就不行
		boolean p1 = true;
		boolean p2 = true;
		//正常情况下我们都会这么写
		if(p1 != p2)
		{
			// 不是同性恋,允许结婚
		}
		else
		{
			// 是同性恋不允许结婚
		}
		//异或的功能是两个不一样的为真,相同为假,也就是
		//说p1 ^ p2 如果为真,那就不是同性恋。
		//当然由于对比布尔表达式来说,你用!= 和 ^ 都可以
		//但是相信我,如果你用 ^ 绝对是亮点,很多老程序员
		//不经意间看见这个绝对愣神
		if(p1 ^ p2)
		{
			// 不是同性恋,允许结婚
		}
		else
		{
			// 是同性恋不允许结婚
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值