逻辑运算符与位运算符
逻辑运算符
1.运算符“!”
用于对逻辑值的取反运算。当逻辑值为true时,经过取反变为false;当逻辑值为false时取反成true。
2.运算符^
运算符”^“用于对逻辑值进行异或运算。当运算两侧同时为true或false时,运算结果为false,否则为true。
3.运算符”&&“和“&”
运算符”&&“和“&”均用于逻辑与运算。当两侧同时为true时,运算结果为true,其他情况均为false。
运算符”&&“为简介与运算符,运算符“&”为非简洁与运算符,她们的区别如下
1)运算符”&&“只有在其左侧为true时,才运算其右侧的逻辑表达式,否则直接返回运算结果false。
2)运算符“&”无论其左侧为false还是true,都会运行其右侧的逻辑表达式,最后才返回运算结果。
int x=7,y=5;
System.out.println((x<y)&&(x++==y--)); //输出结果为false
System.out.println("x="+x); //输出x的值为7
System.out.println("y="+y); //输出y的值为5
int x=7,y=5;
System.out.println((x<y)&(x++==y--)); //输出结果为false
System.out.println("x="+x); //输出x的值为8
System.out.println("y="+y); //输出y的值为4
4.运算符“ | | ”与“ | ”
运算符“ | | ”与“ | ”均用于逻辑与运算。当两侧同时为false时,运算结果为true,其他情况均为false。
运算符“ | | ”为简介与运算符,运算符“ | ”为非简洁与运算符,她们的区别如下
1)运算符“ | | ”只有在其左侧为false时,才运算其右侧的逻辑表达式,否则直接返回运算结果true。
2)运算符“ | ”无论其左侧为false还是true,都会运行其右侧的逻辑表达式,最后才返回运算结果
int x=7,y=5;
System.out.println((x>y)||(x++==y--)); //输出结果为true
System.out.println("x="+x); //输出x的值为7
System.out.println("y="+y); //输出y的值为5
int x=7,y=5;
System.out.println((x>y)|(x++==y--)); //输出结果为true
System.out.println("x="+x); //输出x的值为8
System.out.println("y="+y); //输出y的值为4
位运算符
位运算时对操作数以二进制为单位进行的操作与运算,运算结果均为整数性。位运算符又分为逻辑位运算符和位移运算符。
1.逻辑位运算符
逻辑位运算符有 “~(按位取反)”、“&(按位与)”、“|(按位与)”“^(按位异或)”
逻辑位运算符的运算规则
操作数x | 操作数y | ~x | x&y | x(按位与) y | x^y |
---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 1 |
1 | 1 | 0 | 1 | 1 | 0 |
具体代码:
public class Example{
public static void main(String[] args){
int a=5&4; //运算结果为4
int b=3|6; //运算结果为7
int c=10^3; //运算结果为9
int d=~(-14); //运算结果为13
}
}
2.移位运算符
移位运算符有“<<(左移,低位添0补齐)”,“>>(右移,高位添符号位)”和“>>>(右移,高位添0补齐)”,用来对操作数进行位移运算
public class Example{
public static void main(String[] args){
int a=-2<<3; //运算结果为4
int b=15>>2; //运算结果为7
int c=4>>>2; //运算结果为9
int d=-5>>>1; //运算结果为13
}
}
三元运算符“? : ”
应用形式如下:
逻辑表达式?表达式1:表达式2
**规则为:**若逻辑表达式的值为true,则整个表达式的值为表达式1的值,否则为表达式2的值
注:不管逻辑表达式的值为如何,都只会运行一个表达式
int x=7,y=5;
System.out.println(x>y?x++:y++); //输出结果为7
System.out.println("x="+x); //输出x的值为8
System.out.println("y="+y); //输出y的值为5