一.逻辑运算符
逻辑运算符共有三种,即“非”、“和”、“或”,分别用 " ! "、“&&”、“||”表示。其中:
1、非运算(!)表示否定,如:!true等于false、!false等于true、!2等于false、!0等于true。
2、和运算(&&)前后两个条件都为真时,才返回true,否则返回false。
3、或运算(||)前后两个条件有一个为真是,返回true,都为假时,返回false。
public class data10{
public static void main(String[] args){
int a=10;
int b=21;
int c=10;
System.out.println("说 a>b,对吗?"+!(a>b));
System.out.println("认为既 a>b 又 ab)&&(a
System.out.println("认为既 a>b 又 a=b)||(a==b)));
System.out.println("认为既 a>b 又 a=c,对吗?"+((a
}
}运行结果:
说 a>b,对吗?true 认为既 a>b 又 a 认为既 a>b 又 a 认为既 a>b 又 a=c,对吗?true
总结:下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
| 操作符 | 描述 | 例子 |
|---|---|---|
| && | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
| ! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
实例
下面的简单示例程序演示了逻辑运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:
public class Test {
public static void main(String args[]) {
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
}
}以上实例编译运行结果如下:
a && b = false a || b = true !(a && b) = true
二.位运算符
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”,分别用"&"、"~"、" | "、"^"。其中:
与运算(&)两个操作数的位都为 1,结果才为 1,否则结果为 0。
非运算(~)的操作数的位如果为 0,结果是 1,如果为 1,结果是 0。
或运算(|)两个操作数的位只要有一个为 1,那么结果就是 1,否则就为 0。
异或运算(^)的两个操作数的位相同时结果为 0,不同时结果为 1。
public class data13{
public static void main(String[] args){
int a=129;
int b=128;
int x=15;
int y=2;
System.out.println("a 和 b 与的结果是:"+(a&b));
System.out.println("a 和 b 或的结果是:"+(a|b));
System.out.println("x 与 y 异或的结果是:"+(x^y));
}
}运行结果:
a 和 b 与的结果是:128 a 和 b 或的结果是:129 x 与 y 异或的结果是:13
总结:
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设a = 60,和b = 13;它们的二进制格式表示将如下:
A = 0011 1100 B = 0000 1101 ----------------- A&b = 0000 1100 A | B = 0011 1101 ^ B = 0011 0001 ~A= 1100 0011
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
| 操作符 | 描述 | 例子 |
|---|---|---|
| & | 按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。 | (A&B),得到12,即0000 1100 |
| | | 按位或操作符,只要两个操作数的某一位有一个非0时候结果的该位就为1。 | (A | B)得到61,即 0011 1101 |
| ^ | 按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。 | (A ^ B)得到49,即 0011 0001 |
| ~ | 按位补运算符翻转操作数的每一位。 | (~A)得到-60,即1100 0011 |
| << | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
| >> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
| >>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
实例
下面的简单示例程序演示了位运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:
public class Test {
public static void main(String args[]) {
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 215 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 215 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
}
}以上实例编译运行结果如下:
a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 15 a >>> 15
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
