一、运算符与表达式
-
(1)运算符分类:
- 0.赋值运算符 =
- 1.算数运算符 + - * / %
- 2.比较运算符 < > == <= >= !=
- 3.逻辑运算符 & | ! && ||
- 4.位运算符 & | ~ << >> ^
- 5.一元运算符 ++ – += -= *= /= %=
- 6.二元运算符
- 7.三元运算符 变量=条件?值1:值2;
-
(2)逻辑运算符 & | ! && || (与或非)
注意:逻辑运算符左右两边所存放的变量或者表达式必须是布尔类型的-
运算公式:
与:
true 与 true = true
true 与 false = false
false 与 true = false
false 与 false = false
或:
true 或 true = true
true 或 false = true
false 或 true = true
false 或 false = false -
&和&&的区别
- &(单位与):不管‘与’符号左边的逻辑运算结果是真还是假,都会判断符号右边的结果,耗时。
- &&(短路与):如果‘与’符号左边的结果为假,就不会再判断右边的运算结果,因为最终的结果已经确定,为假。
-
|和||的区别
- |(单位或):不管‘或’符号左边的逻辑运算结果是真还是假,都会判断符号右边的结果,耗时。
- ||(短路或):如果‘或’符号左边的结果为真,就不会再判断右边的运算结果,因为最终的结果已经确定,为真。
-
(3)位运算
- 位运算符: & | ^ ~
- & :每一位都是1,结果为1,否则为0
- | :每一个都是0,结果为0,否则为1
- ^ : 每一位的值相同,结果为0 ,否则为1
- ~ : 每一位进行取反,0变1 ,1变0
-
二、下边附上代码:(读者可以进行相应的测试)
public class V3 {
public static void main(String[] args) {
// 运算符和表达式
/*
* 算术运算符 :+ - * / %
*/
int x = 25 , y = 20;
System.out.println("a+b= " + (x+y));
System.out.println("a-b= " + (x-y));
System.out.println("a*b= " + (x*y));
System.out.println("a/b= " + (x/y));
System.out.println("a%b= " + (x%y));
/*
* 赋值运算符:= += /= *= -=
*/
System.out.println("x+=y: " + (x+=y));
System.out.println("x-=y: " + (x-=y));
System.out.println("x*=y: " + (x*=y));
/*
* 关系运算符 : == ,!= ,< ,> ,<= ,>=
* 作用:关系判断,返回布尔值
*
*/
x = 20;
y = 10;
System.out.println("x==y: " + (x==y));
System.out.println("x!=y: " + (x!=y));
System.out.println("x<y: " + (x<y));
System.out.println("x>y: " + (x>y));
/*
* 逻辑运算符:&& ,|| ,! ,与或非
* 返回布尔值
* 并且:只要表达式中有一个false,整个表达式就是false
*/
System.out.println("x==y && x!=y" + (x==y && x!=y));
int a = 5;
int b = 5;
System.out.println("a==b && a!=b" + (a==b && a!=b));
// 或:表达式中只要有一个是true,表达式的值就是 true
System.out.println("a==b || a!=b" + (a==b || a!=b));
//非:表示取反,表达式为真时,取非,就是false
System.out.println("!(a==b): "+ !(a==b));
//结合使用: 优先级 : !高于 && 高于 ||
System.out.println("(a==b && x>=y || !(a!=b)): " + (a==b && x>=y || !(a!=b)));
/*
* 位运算符: & | ^ ~
*/
int c = 3;//二进制3:011
int d = 5;//二进制5:101
System.out.println("二进制c:" +Integer.toBinaryString(c));
System.out.println("二进制d:" +Integer.toBinaryString(d));
System.out.println("十进制结果:" + (c&d));
System.out.println("十进制结果:" +(c|d));//先转化为二进制,然后比较
System.out.println("十进制结果:" +(c^d));
System.out.println("二进制~c:" +Integer.toBinaryString(~c));
System.out.println("十进制结果:" +(~c));//按位取反
}
}