zoukankan      html  css  js  c++  java
  • JAVA运算符

    计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。
    运算符和表达式是Java程序的基本组成要素。运算符是一种特殊的符号,用以表示数据的运算,赋值和比较。不同的运算符用来完成不同的运算。
    java语言使用运算符将一个或者多个操作数连缀成执行性语句,形成表达式,表达式是由运算符和操作数按一定语法规则组成的符号序列。
    运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和三目运算符等。


    一、算术运算符
    算术运算符主要用于进行基本的算术运算,如加法、减法、乘法、除法等。
    Java 中常用的算术运算符:
    算术运算符 名称 举例
    + 加法 3+5=8
    - 减法 10-3=7
    * 乘法 2*3=6
    / 求商 20/5=4
    % 求余 21%6=3
    ++ 自加 int i=5;i++
    -- 自减 int i=5;i--
    其中,++和--既可以出现在操作数的左边,也可以出现在右边,但结果是不同的。
    备注:如果变量在++运算符的左边,那么在运算过程中,先进行++运算符左边的算法,在执行++运算,变量在++运算符的右边,那么在运算过程中,先进行++运算,在执行++运算符左边的算法。
    说明:不管变量是在++或--运算符的左边还是右边,对于该变量本身都会做自+1或-1运算。
    注意:一定要注意哦!自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误滴!
    % 用来求余数,也称为”取模运算符“
    例子:
    public class HelloWorld{
        public static void main(String[] args) {
            int age1=24;
            int age2=18;
            int age3=36;
            int age4=27;
            int sum=age1+age2+age3+age4;
            double avg=sum/4;
            int minus=Math.abs(age1-age2);
            int newAge=--age1;
            System.out.println("四个年龄的总和:"+sum);
            System.out.println("四个年龄的平均值:"+avg);
            System.out.println("age1 和 age2年龄差值:"+minus);
            System.out.println("age1自减后的年龄:"+newAge);
        }
    }
    


    二、赋值运算符
    赋值运算符是指为变量或常量指定数值的符号。如可以使用 “=” 将右边的表达式结果赋给左边的操作数。
    Java 支持的常用赋值运算符,如下表所示:
    运算符 名称 举例
    = 赋值 c=a+b 将把a+b得到的值赋给c
    += 加等于 c+=a等价于c=c+a
    -= 减等于 c-=a等价于c=c-a
    *= 乘等于 c*=a等价于c=c*=a
    /= 商等于 c/=a等价于c=c/a
    %= 余等于 c%=a等价于c=c%a

    例子:
    public class HelloWorld{
        public static void main(String[] args) {
            int one = 10 ;
            int two = 20 ;
            int three = 0 ;
            three=one+two;
            System.out.println("three = one + two ==> "+three);
            three+=one;
            System.out.println("three += one ==> "+three);
            three-=one;
            System.out.println("three -= one ==> "+three);
            three*=one;
            System.out.println("three *= one ==> "+three);
            three/=one;
            System.out.println("three /= one ==> "+three);
            three%=one;
            System.out.println("three %= one ==> "+three);
        }
    }

    三、比较运算符
    比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )。
    Java 中常用的比较运算符如下表所示:
    比较运算符 名称 例子 结果
    > 大于 a=3;b=1;a>b true
    < 小于 a=3;b=1;a<b false
    >= 大于等于 a=3;b>=1 true
    <= 小于等于 a=3;b=1;a<=b false
    == 等于 a=3;b=1;a==b false
    != 不等于 a=3;b=1;a!=b true

    注意哦:
    1、  > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型
    2、  == 、 != 两边的操作数既可以是数值类型,也可以是引用类型
    3、>=、<=该运算符运算过程中只要满足其中一种情形结果即为true
    public class HelloWorld{
        public static void main(String[] args) {
            int a=16;
            double b=9.5;
            String str1="hello";
            String str2="imooc";
            System.out.println("a等于b:" + (a  == b));
            System.out.println("a大于b:" + (a  > b));
            System.out.println("a小于等于b:" + (a <  b));
            System.out.println("str1等于str2:" + (str1.equals(str2)));
        }
    }
    ps: 1、java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
      2、==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
      3、equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
      4、==比较的是2个对象的地址,而equals比较的是2个对象的内容,显然,当equals为true时,==不一定为true。



    四、逻辑运算符
    逻辑运算符主要用于进行逻辑运算。Java 中常用的逻辑运算符如下表所示:
     
    逻辑运算符 名称 例子 结果
    && a&&b 如果a与b都为true,则返回true
    || a||b 如果a与b任一为true,则返回true
    !a 如果a为flase,则返回true,即取反
    异域 ^ a^b 如果a和b有且仅有一个true,则返回true

    我们可以从“投票选举”的角度理解逻辑运算符:
    1、 与:要求所有人都投票同意,才能通过某议题
    2、 或:只要求一个人投票同意就可以通过某议题
    3、 非:某人原本投票同意,通过非运算符,可以使其投票无效
    4、 异或:有且只能有一个人投票同意,才可以通过某议题
    注意:
     **&与&&的异同点:
                        相同点:都是做与运算
                        不同点:&&可以实现断路(短路)
                备注:短路效果,当&&符号左边的布尔型值可以确定为false的时候,那么程序在执行到&&符号的时候,会发生跳跃,也就是&&后面的表达式程序不在执行
     |与||的异同点:
                        相同点:都是做或运算
                        不同点:||可以实现断路(短路)
                备注:短路效果,当||符号左边的布尔型值可以确定为true的时候,那么程序在执行到||符号的时候,会发生跳跃,也就是||后面的表达式程序不在执行**
    例子:
    public class HelloWorld {
        public static void main(String[] args) {
            boolean a = true; // a同意
            boolean b = false; // b反对
            boolean c = false; // c反对
            boolean d = true; // d同意
            //a与b都必须要同意才能通过
            System.out.println((a && b) + " 未通过");
            //a与b必须有一人同意才能通过
            System.out.println((a || b) + " 通过");
            //a为反对才能通过
            System.out.println((!a) + " 未通过");
            //c与d中必须有且只有一人同意才能通过
            System.out.println((c ^ d) + " 通过");
        }
    }
    


    五、条件运算符
    条件运算符( ? : )也称为 “三元运算符”。
    **语法形式:布尔表达式 ? 表达式1 :表达式2
    运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值**
    第一种例子:
    public class HelloWorld {
        public static void main(String[] args) {
        int a = 10;
            int b = 20;
            System.out.println(a < b ? "a>b?": "a < b √");
      }
    }
    说明:将三目运算直接在输出语句中使用
    第二种例子:
    public class HelloWorld {
        public static void main(String[] args) {
        int a = 10;
            int b = 20;
        int c = a > b ? a : b;
        System.out.println(c);
      }
    } 
    

    说明:三目运算不在输出语句中使用
    注意:
    如果三目运算符是在输出语句中,那么对三目运算符的结果值真假类型不要求。
    如果不是在输出语句中,在其他的语句中,如赋值运算语句,那么就需要严格控制三目运算符的结果值真假的数据类型,真假的结果值类型要一致,保持和赋值运算中的变量的数据类型一致**

    六、位运算符
    下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
    操作符 描述 例子
    & 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
    | 如果相对应位都是0,则结果为0,否则为1 (A| B)得到61,即 0011 1101
    ^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
    ~ 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
    << 按位左移运算符。左操作数按位左移右操作数指定的位数。  A << 2得到240,即 1111 0000
    >> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
    >>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111
     
  • 相关阅读:
    (九十三)蓝牙的基本使用
    (九十二)加速计的用法(过期方法+新方法)
    (九十一)距离传感器的使用
    1060. Are They Equal (25)
    (九十)使用多个storyboard+代码实现控制器的分开管理
    (八十九)用AutoLayout实现动画和Label根据内容自动调整
    HDU 2013:蟠桃记
    HDU 2050:折线分割平面
    HDU 2042:不容易系列之二
    HDU 1465:不容易系列之一
  • 原文地址:https://www.cnblogs.com/ma159753/p/13811104.html
Copyright © 2011-2022 走看看