Java运算符与表达式(二)

来自CloudWiki
Cloud17讨论 | 贡献2019年3月3日 (日) 08:32的版本 (创建页面,内容为“ ====关系运算符==== *关系运算符,又称比较运算符,用于比较两个操作数的大小,运算结果是boolean型。 *当运算符对应的关系…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

关系运算符

  • 关系运算符,又称比较运算符,用于比较两个操作数的大小,运算结果是boolean型。
  • 当运算符对应的关系成立时,运算结果是true。
  • 当运算符对应的关系不成立时,运算结果是false。
10 > 9                   //运算结果是true
10 < 9                   //运算结果是false
10 >= 9                 //运算结果是true
10 <= 9                 //运算结果是false
10 == 9                 //运算结果是false
10 != 9                  //运算结果是true
  • 关系运算符的>、>=、<、<=两边的操作数只能是数值类型。
  • 关系运算符的==、!=两个的操作数可以是数值类型,也可以是引用类型(暂时不考虑)

逻辑运算符

  • 逻辑运算符用于操作两个布尔型的变量或常量。逻辑运算符包括:
  • &&:逻辑与运算符,前后两个操作数必须都是true才返回true,否则返回false。例如,2>8&&9>2的结果为false。
int a = 2;
int b = 8;
System.out.println(a < b && b> 2);
//输出表达式的运算结果为true
System.out.println(a > b && b> 2);
//输出表达式的运算结果为false;
  • 逻辑与运算符具备短路效果,即当前面的操作数(a>b)为false,后面的操作数对应的表达式不再执行,直接返回false。
  • ||:逻辑或运算符,只要两个操作数中有一个是true,就可以返回true,否则返回false。
int a = 2;
int b = 8;
//输出表达式的运算结果为true
System.out.println(a < b || b> 2);
//a的值为2,b的值为8
System.out.println(a < b || b< 2);
//此时,输出表达式的运算结果仍然为true
  • 逻辑或运算符具备短路效果,即当前面的操作数(a>b)为true,后面的操作数对应的表达式不在执行,直接返回true。
  • !:逻辑非运算符,只需要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true。例如:
System.out.println(!(2 > 8))                                   //运算结果为true

位运算符(选学)

  • *任何信息在计算机中都是以二进制的形式存在的,位运算符对操作数中的每个二进制位都进行运算。位运算符包括:
  • &:按位与。当两位同时为1时才返回1。
  • |:按位或。只要有一位为1即可返回1。
  • ~:按位非。单目运算符,将操作数的每一位(包括符号位)全部取反。
  • ^:按位异或。当两位相同时返回0,不同时返回1.
  • >>:右移运算符。例如,11>>2; // 则是将数字11右移2位。
  • <<:左移运算符。例如,5 <<2; //则是将数字5左移2位。
  • >>>:无符号右移运算符。
  • 原理:
A = 0011 1100
B = 0000 1101
-----------------
A&b = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
  • 例子:
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;     /* 15 = 1111 */
     System.out.println("a >> 2  = " + c );
  
     c = a >>> 2;     /* 15 = 0000 1111 */
     System.out.println("a >>> 2 = " + c );
  }
} 
  • 拓展:一个整数的二进制表达
 int i = 5;
 String b = (Integer.toBinaryString(i));

括号运算符

  • 圆括号“()”也是Java的运算符,圆括号是用来处理表达式优先级的。
  • 例如,一个简单的加减乘除表达式为例:
3+5+4*6-7  //未加括号的表达式
  • 相信根据读者现在所学过的数学知识,这道题应该很容易解开。利用加减乘除的优先级(*、/的优先级大于+、-)来计算,这个表达式的结果为25。如果想先计算3+5+4、6-7,然后再将计算后的两个数相乘,就必须将3+5+4及6-7分别加上括号,成为下面的表达式:
(3+5+4)*(6-7) // 加上括号的表达式。
  • 此时,具备圆括号的表达式运算结果为-12,所以圆括号可以改变表达式的处理顺序。

三目运算符

  • 三目运算符只有一个:?:,三目运算符的语法格式如下:
  • 逻辑表达式?表达式1:表达式2
  • 三目运算符的规则是:先对第一个操作数逻辑表达式求值,如果逻辑表达式返回true,则返回第二个操作数表达式1的值;如果逻辑表达式返回false,则返回第三个操作数表达式2的值。例如:
String str = 5 > 3 ? "5大于3" : "5不大于3";
System.out.println(str);    //输出“5大于3”

Java练习题

  • 赋值运算符:假设int a = 10; int b = 20; int c = 30;

打印 c = a + b、c += a、c += a、c += a、c += a的值。

  • 算术运算符:假设int a = 10; int b = 20; int c = 25; int d = 25;

打印a+b、a-b、a*b、b/a、b%a、c%a、a++、a--、d++、++d

  • 计算n的阶乘(n=3,4,5,6,7)
  • 这段代码运行后,i等于多少?j等于多少?k等于多少?
int i = 0;   
int j = i++;   
int k = --i;
  • 关系运算符:假设int a = 10;int b = 20;

打印a == b、a != b、a > b、a < b、b >= a、b <= a的值

  • 逻辑运算符:假设boolean a = true; boolean b = false;

打印a && b、a || b 、!(a && b) 的值。

  • 快速计算2*16

返回 Java程序设计