Java运算符

数学运算

如果说程序是由数据处理所组成的,那么有了数据之后还需要具备有数据的计算能力,而这些就属于运算符的定义范畴,但是运算符Java有很多,而且运算符有优先级。
在这里插入图片描述
对于运算符,千万别搞复杂了。
范例:奇葩运算

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 20;
		int result =x+y--*y++ + ++x/2+--y+ x++;
		System.out.println(result);//425
	}
}

以上操作不要出现,因为这种代码太恶心了。写的代码越简单越好。
基础运算符一般都比较简单,都是和数学计算有关。
范例:四则运算

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 20;
		int result =(x+y)-x+y;
		System.out.println(result);//40
	}
}

同时在进行加、减、乘、除等运算的过程中会存在有简化的运算符。
范例:简化运算符

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 20;
		x = x + y;//用x和y的内容计算,其结果赋值给x
		System.out.println(x);//30
	}
}

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 20;
		x += y;//用x和y的内容计算,其结果赋值给x
		System.out.println(x);//30
	}
}

例如:+=、-=、*=、/=
范例:求模

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 3;
		System.out.println(x%y);//1
	}
}

而数学计算中,有一种符号比较难理解:++(自增)、- -(自减),并且其位置不同作用也不同:

  • ++变量:表示先进行变量自增1,然后再利用变量进行操作;
  • 变量++:表示先使用变量的内容进行计算,然后再进行变量自增1;
  • | --变量:表示先进行变量的自减1,然后再利用变量进行操作;
  • 变量- -:表示先使用变量的内容进行计算,然后再进行变量自减1;
    范例:观察自增或自减运算。
public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 3;
		//先让x的内容自增1,然后与y相加。
		int result= ++x + y;
		System.out.println(result);//14
	}
}
public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 3;
		//先处理x与y的相加操作,然后进行x的内容自减。
		int result= x-- + y;
		System.out.println(result);//13
		System.out.println(x);//9
	}
}

如果简化操作看不明白,就再简化点。(将自增或9自减分出来)

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 3;
		//先处理x与y的相加操作,然后进行x的内容自减。
		int result= x + y;
		x--;
		System.out.println(result);//13
		System.out.println(x);//9
	}
}

关系与逻辑运算

关系运算:>,<,>=,<=,==(等于)、!=(不等于)
注:=是赋值, ==是判断
范例:进行关系判断

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 3;
		boolean result = x > y;
		System.out.println(result);//true
	}
}

但是在很多情况下,关系判断可能有很多个一起进行,那么这就需要使用到逻辑运算符:

  • 与:&&(短路与)、&(普通与)。所有条件同时满足;
  • 或:||(短路或)、|(普通或)。有一个满足即可;
  • 非:!。整体求反,true变false,false变true。

与操作

与操作分为两种与操作
范例:观察“&”操作

public class Hello {
	public static void main(String args[]){
		if(10<2&10/0==0){//希望 判断多个条件
			System.out.println("****************");
		}
	}
}

在这里插入图片描述
现在有两个判断条件,第一个判断条件没有错误,但是第二个判断条件有错误,通过运行结果可以发现,现在两个判断条件都执行了。但是,与运算的特点是:所有的判断条件都必须返回true,才会返回true。如果有10个条件,第二个返回的是false,那么后面不管有多少个true,结果都是false。
按照这个思路,观察如上代码,首先“10<2”结果是false,所以后面是否判断其最终的结果都是false,不可能变为true。所以在这种情况下,如果使用的是“&”,那么会判断所有的判断条件,如果使用“&&”,就表示如果前面有条件不满足(即返回false),那么这之后的判断不再进行,最终结果就是false。
范例:修改上述程序

public class Hello {
	public static void main(String args[]){
		if(10<2&&10/0==0){//希望 判断多个条件
			System.out.println("****************");
		}
	}
}

在这里插入图片描述

或操作

或操作有两种。
范例:首先观察“|”操作

public class Hello {
	public static void main(String args[]){
		if(10>2|10/0==0){//希望 判断多个条件
			System.out.println("****************");
		}
	}
}

在这里插入图片描述
此时程序出现错误,出现这个错误很明显是执行了10/0的操作,那么就表明了在当前环境下,if的所有判断表达式都执行了。
但是或操作的特点:若干个条件只要有一个返回true,其结果就是true。所以说,如果现在有若干个条件,如果前面有一个条件返回true,那么最终结果一定是true,不管后面会返回多少个false。所以为了提高判断性能,可以采用短路或的方式处理。
范例:短路或

public class Hello {
	public static void main(String args[]){
		if(10>2||10/0==0){//希望 判断多个条件
			System.out.println("****************");//****************
		}
	}
}

通过分析可以发现在进行与和或的操作过程中,一定要使用“&&”或者是“||”,不要使用普通与或普通或操作。

三目运算

三目是一个带逻辑验证条件的赋值操作。可以执行一些布尔判断,然后根据布尔的结果进行赋值,其使用方法如下:

数据类型 变量名称 = 布尔表达式?满足表达式时的内容:不满如表达式时的内容

范例:观察三目运算

public class Hello {
	public static void main(String args[]){
		int x = 10;
		int y = 3;
		//将x与y里的最大值赋值给result。
		//首先要判断x与y的大小关系,如果x大于y,则将x赋值给result,否则将y赋值给result
		int result= x > y ? x:y;
		System.out.println(result);//10
	}
}

在以后的开发中,三目运算特别好用,而且会大量使用。

位运算(了解)

位主要是指进行二进制操作,对于位操作,首先要解决的问题就是如何将十进制数据转换为二进制数据。转换的依据:数字除2取模,而后倒序整理。
要求将19转化为二进制数.,,那么可以按照如下方式进行转换。;&在这里插入图片描述
在Java中提供有位运算,主要:&、|、^、~、>>、<<。
范例:观察位与操作。

public class Hello {
	public static void main(String args[]){
		int x=19;
		int y=9;
		System.out.println(x&y);//1		
	}
}

在这里插入图片描述
范例:或操作

public class Hello {
	public static void main(String args[]){
		int x=19;
		int y=9;
		System.out.println(x|y);//27		
	}
}

[在这里插入图片描述](https://img-blog.csdnimg.cn/20190331204959276.png
范例:移位,计算2的3次方

public class Hello {
	public static void main(String args[]){
		int x=2;
		System.out.println(x<<2);//8		
	}
}

2的二进制: 00000000 00000000 00000000 00000010
向左移两位:00000000 00000000 00000000 00001000
面试题:请解释“&”和“&&”、“|”和“||”的关系。

  • 在逻辑运算中:
    • 与操作表示判断的若干个条件要同时返回true,分为两种:
      • “&”:所有的判断条件都要进行判断,不管前面的结果是什么;
      • “&&”:在进行条件判断时,如果前面的条件返回false,后面的判断不再进行,属于短路与;
    • 或操作表示判断的若干个条件返回一个true,结果就是true,全为false,结果就是false。
      • “|”:所有的判断条件都要进行判断
      • “||”:在进行若干个条件判断时,如果前面有条件返回了true,后面的判断将不再进行,直接返回true。
  • 在位运算中:
    • “&”:表示进行位与操作,位与操作中只有两个相应位置上的数都是1,结果才是1,否则就是0;
    • “|”:表示进行位或操作,位或操作中只有两个相应位置上的数都是0,结果才是0,否则就是1;

总结

1.编写代码时一定要只写简单运算,不要写复杂运算;
2.三目运算最容易被开发者所忽略,但是真的很有用。
3.多个条件判断时永远使用“&&”(短路与)、“||”(短路或)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值