美文网首页Java从小白到大牛精简版
《Java从小白到大牛》之第6章 运算符(上)

《Java从小白到大牛》之第6章 运算符(上)

作者: tony关东升 | 来源:发表于2017-11-13 08:45 被阅读32次

    《Java从小白到大牛》纸质版已经上架了!!!

    Java语言中的运算符(也称操作符)在风格和功能上都与C 和C++极为相似。本章为大家介绍Java语言中一些主要的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和其他运算符。

    6.1 算术运算符

    Java中的算术运算符主要用来组织数值类型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。

    6.1.1 一元运算符

    算术一元运算一共有3个,分别是-、++和--。具体说明参见表6-1。

    表6-1一元算术运算

    运 算 符 名  称 说  明 例  子
    - 取反符号 取反运算 b = -a
    ++ 自加一 先取值再加一,或先加一再取值 a++或++a
    -- 自减一 先取值再减一,或先减一再取值 a--或--a

    表6-1中,-a是对a取反运算,a++或a--是在表达式运算完后,再给a加一或减一。而++a或--a是先给a加一或减一,然后再进行表达式运算。

    示例代码如下:

    int a = 12;
    System.out.println(-a); ①
    int b = a++; ②
    System.out.println(b);
    b = ++a; ③
    System.out.println(b);
    
    

    输出结果如下:

    -12
    12
    14
    

    上述代码第①行是-a,是把a变量取反,结果输出是-12。第②行代码是先把a赋值给b变量再加一,即先赋值后++,因此输出结果是12。第③行代码是把a加一,然后把a赋值给b变量,即先++后赋值,因此输出结果是14。

    6.1.2 二元运算符

    二元运算符包括:+、-、*、/和%,这些运算符对数值类型数据都有效,具体说明参见表6-2。

    表6-2二元算术运算

    运 算 符 名  称 说  明 例  子
    + 求a加b的和,还可用于String类型,进行字符串连接操作 a + b
    - 求a减b的差 a - b
    * 求a乘以b的积 a * b
    / 求a除以b的商 a / b
    % 取余 求a除以b的余数 a % b

    示例代码如下:

    //声明一个字符类型变量
    char charNum = 'A';     
    // 声明一个整数类型变量
    int intResult = charNum + 1;            ①
    System.out.println(intResult);
    
    intResult = intResult - 1;
    System.out.println(intResult);
    
    intResult = intResult * 2;
    System.out.println(intResult);
    
    intResult = intResult / 2;
    System.out.println(intResult);
    
    intResult = intResult + 8;
    intResult = intResult % 7;
    System.out.println(intResult);
    
    System.out.println("-------");
    
    // 声明一个浮点型变量
    double doubleResult = 10.0;
    System.out.println(doubleResult);
    
    doubleResult = doubleResult - 1;
    System.out.println(doubleResult);
    
    doubleResult = doubleResult * 2;
    System.out.println(doubleResult);
    
    doubleResult = doubleResult / 2;
    System.out.println(doubleResult);
    
    doubleResult = doubleResult + 8;
    doubleResult = doubleResult % 7;
    System.out.println(doubleResult);
    

    输出结果如下:

    66
    65
    130
    65
    3
    -------
    10.0
    9.0
    18.0
    9.0
    3.0
    

    上述例子中分别对数值类型数据进行了二元运算,其中代码第①行将字符类型变量charNum与整数类型进行加法运算,参与运算的该字符('A')的Unicode编码65。其他代码比较简单不再赘述。

    6.1.3 算术赋值运算符

    算术赋值运算符只是一种简写,一般用于变量自身的变化,具体说明参见表6-3。

    表6-3 算术赋值符

    运 算 符 名  称 例  子
    += 加赋值 a += b、a += b+3
    -= 减赋值 a -= b
    *= 乘赋值 a *= b
    /= 除赋值 a /= b
    %= 取余赋值 a %= b

    示例代码如下:

    int a = 1;
    int b = 2;
    a += b;     // 相当于 a = a + b
    System.out.println(a);
    
    a += b + 3; // 相当于 a = a + b + 3
    System.out.println(a);
    a -= b;     // 相当于 a = a - b
    System.out.println(a);
    
    a *= b;     // 相当于 a=a*b
    System.out.println(a);
    
    a /= b;     // 相当于 a=a/b
    System.out.println(a);
    
    a %= b;     // 相当于 a=a%b
    System.out.println(a);
    

    输出结果如下:

    3
    8
    6
    12
    6
    0
    

    上述例子分别对整型进行了+=、-=、*=、/=和%=运算,具体语句不再赘述。

    6.2 关系运算符

    关系运算是比较两个表达式大小关系的运算,它的结果是布尔类型数据,即true或false。关系运算符有6种:==、!=、>、<、>=和<=,具体说明参见表6-4。

    表6-4 关系运算符
    [图片上传失败...(image-24a409-1510533942975)]

    **提示 ==和!=可以应用于基本数据类型和引用类型。当用于引用类型比较时,比较的是两个引用是否指向同一个对象,但当时实际开发过程多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象。
    **
    示例代码如下:

    
    int value1 = 1;
    int value2 = 2;
    
    if (value1 == value2) {
        System.out.println("value1 == value2");
    }
    
    if (value1 != value2) {
        System.out.println("value1 != value2");
    }
    
    if (value1 > value2) {
        System.out.println("value1 > value2");
    }
    
    if (value1 < value2) {
        System.out.println("value1 < value2");
    }
    
    if (value1 <= value2) {
        System.out.println("value1 <= value2");
    }
    

    运行程序输出结果如下:

    value1 != value2
    value1 < value2
    value1 <= value2
    

    6.3 逻辑运算符

    逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体说明参见表6-5。

    表6-5 逻辑运算符
    [图片上传失败...(image-6280e7-1510533942975)]

    提示 短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或。

    示例代码如下:

    int i = 0;
    int a = 10;
    int b = 9;
    
    if ((a > b) || (i == 1)) {                          ①
        System.out.println("或运算为 真");
    } else {
        System.out.println("或运算为 假");
    }
    
    if ((a < b) && (i == 1)) {                      ②
        System.out.println("与运算为 真");
    } else {
        System.out.println("与运算为 假");
    }
    
    if ((a > b) || (a++ == --b)) {                  ③
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
    

    上述代码运行输出结果如下:

    或运算为 真
    与运算为 假
    

    其中,第①行代码进行短路计算,由于(a > b)是true,后面的表达式(i == 1)不再计算,输出的结果为真。类似地,第②行代码也进行短路计算,由于(a < b)是false,后面的表达式(i == 1)不再计算,输出的结果为假。

    代码第③行中在条件表达中掺杂了++和—运算,由于(a > b)是true,后面的表达式(a++ == --b)不再计算,所以最后是a = 10, b = 9。如果把短路或(||)改为逻辑或(|),那么输出的结果就是a = 11, b = 8了。

    配套视频

    http://www.zhijieketang.com/classroom/6/courses

    配套源代码

    http://www.zhijieketang.com/group/5

    与本书免费版对应的还有一个收费版本:

    1. 进入百度阅读电子书

    2. 进入图灵社区电子书

    相关文章

      网友评论

        本文标题:《Java从小白到大牛》之第6章 运算符(上)

        本文链接:https://www.haomeiwen.com/subject/zkuamxtx.html