一、Java运算符
- 运算符的简介
所有的程序开发,都是对数字的进行处理。而对数字的处理,一定会存在所谓的操作模式,而这些操作模式就被称为运算符。
- 算术运算符
对于算术运算符,我们主要掌握++,--的运用就可以了,因为前面的+,-,*,/,%(取余),我们日常生活经常接触,基本都能掌握住。
而对于++,--,我们可以通过程序以及编译运行结果来得出结论
public class Calculation { public static void main(String[] args){ int X = 10; System.out.println("X="+X);//打印10 ++X; System.out.println("++X="+X);//打印11 int Y = 20; System.out.println("Y="+Y);//打印20 ++Y; System.out.println("++Y="+Y);//打印21 int Z = ++X+Y--; //X先自加(X==12),然后Z = 12+21 = 33 //最后算完Z,Y再进行自减(Y==20) System.out.println("Z="+Z); System.out.println("X="+X); System.out.println("Y="+Y); } } E:Java_Project 4_1Calculation>java Calculation X=10 ++X=11 Y=20 ++Y=21 Z=33 X=12 Y=20
-
- 结论:
- “++”,“--”在变量前,先进行变量自加/减,后续再进行运算
- “++”,“--”在变量后,先整个算术进行运算,算术结束运算后,再另行变量的自加/减
- 三目运算符
首先介绍一下三目运算符的格式
int Z=X>Y?X:Y;
定义一个整型变量Z,X若大于Y,把X值赋予变量Z,否则把Y赋予Z。
实例运用:
public class Calculation { public static void main(String[] args){ int X=10,Y=20; int Z = X>Y?X:Y; System.out.println(Z); } }
其实还可以这样玩的(但是极其不建议):
public class Calculation { public static void main(String[] args){ int X=10,Y=20,Z=44; int max = X>Y?(X>Z?X:Z):(Y>Z?Y:Z); System.out.println(max); } }
套娃虽好玩,但是极其不建议。
而我们的三目运算,可以很好地解决简单的if语句的编写!!
- 逻辑运算符与位运算
逻辑运算与为运算有很多相似的符号,平时使用也很容易混淆,所以这里我们来对比分析之间的异同
逻辑运算符 | 位运算符 |
&逻辑与 | &与运算 |
|逻辑或 | |或运算 |
^异或 | ^异或运算 |
!非 | ~取反运算 |
&&与 | >>、<<带符号左右移 |
||或 | >>>不带符号右移 |
&(逻辑与)和&(与运算)的示例
public class Calculation { public static void main(String[] args) { Boolean a=3>2; //结果为true Boolean b=4>5; //结果为false Boolean c=a&b; System.out.println(c); } } //c=true&false ,有一个false,所以结果为false
public class Calculation { public static void main(String[] args){ int x = 4, y = 5;//进行位运算要化成二进制进行计算 System.out.println(x&y);//4→0100 //5→0101 //与运算后,全1出1,其他出0,所以结果0100,即输出(4) } }
|(逻辑或)和|(或运算的示例)
public class Calculation{ public static void main(String[] args) { Boolean a=3>2; //结果为true Boolean b=4>5; //结果为false Boolean c=a|b; System.out.println(c); } } //c=true|false ,有一个true,所以结果为true
public class Calculation { public static void main(String[] args){ int x = 4, y = 5;//进行位运算要化成二进制进行计算 System.out.println(x|y);//4→0100 //5→0101 //或运算后,有1出1,全0出0,所以结果0101,即(5) } }
^(异或)和^(异或运算)的示例
public class Calculation{ public static void main(String[] args) { Boolean a=3>2; //结果为true Boolean b=4>5; //结果为false Boolean c=a^b; System.out.println(c); } } //c=true^false, 不相同,所以结果为false
public class Calculation { public static void main(String[] args){ int x = 4, y = 5;//进行位运算要化成二进制进行计算 System.out.println(x^y);//4→0100 //5→0101 //异或运算后,相同出0,不同出1,所以结果0001,即(1) } }
!(非)和~(取反运算)的示例
public class Calculation{ public static void main(String[] args) { Boolean b=4>5; //结果为false Boolean c=!b; System.out.println(c); } } //b的结果为false,c的结果为true
public class Calculation { public static void main(String[] args){ int x = 4, y = 5;//进行位运算要化成二进制进行计算 System.out.println(~x);//4→0100,取反0变1,1变0,即1011,(11) System.out.println(~y);//5→0101,取反0变1,1变0,即1010,(10) } }
&&(与)和>>、<<(带符号左右移)的示例
public class ketanglianxi { public static void main(String[] args) { int a=3; boolean b=4>5; //b的结果为false Boolean c=b&&(++a)>3; // &&右边的(++a)>3并没运算! System.out.println(c); //c的结果为false,与示例1的运算结果相同 System.out.println(a); //b的结果为3! } } //注意因为&&左边已经有一个false所以&&右边的表达式不会计算,这样会使运算效率增加
public class Calculation { public static void main(String[] args){ int x = 4, y = -5;//进行位运算要化成二进制进行计算 int k = x>>2; int z = y<<1; System.out.println(k);//4→0100,带符号右移两位,即0001,(1) System.out.println(z);//5→0101,带符号左移一位,即1010,(-10) System.out.println(x); System.out.println(y); /*注意:因为位移运算后,值会得到释放,所以我们不能直接进行输出*/ } }
||(或)和>>>(不带符号右移)的示例
public class ketanglianxi { public static void main(String[] args) { Boolean a=3>2; //a的结果为true int b=4; Boolean c=a||(++b)>4; // ||右边的(++b)>4并没运算! System.out.println(c); //c的结果为true,与示例2的运算结果相同 System.out.println(b); //b的结果为4! } } //注意因为||左边已经有一个true所以||右边的表达式不会计算,这样会使运算效率增加
public class Calculation { public static void main(String[] args){ int x = 0;//进行位运算要化成二进制进行计算 int k = x>>>1; System.out.println(k); System.out.println(x); /*注意:因为位移运算后,值会得到释放, 所以我们不能直接进行输出。另外,此时的 X取值只能是(>=0)*/ } }
感谢阿里云开发者社区,让我有整套系统的Java学习教程
同时,感谢博客园,让我有一个免费的博客,并让我做笔记学习!!