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

     
     

    Java运算符

    一、运算符分类

    运算符优先级

    分隔符 . ,()
      ++,--,instanceof,!(逻辑非)
    算术运算符 *,/,%,+,-
    移位运算符 >>,<<,>>>
    关系运算符 >,>=,<,<=,==,!=
    按位运算符 &,^,|,~
    逻辑运算符 &&,||
    条件运算符 ?:
    字符串连接符 +
    赋值运算符 =,+=,-=,*=,/=,%=

     

    二、算术运算符

    (1)一元运算符

    a++:先使用变量a后再自增。

    ++a:变量a先自增后再使用。

    public class TestOperator {
        public static void main(String args[]) {
            int x = 10;
            int y = x++;
            int z = ++y;
            System.out.printf("%d %d %d", x, y, z); // 11 11 11
        }
    }

    (2)二元运算符

    1. 整数运算

    • 操作数只要有Long类型,结果为Long类型,否则结果为int类型。

    2. 浮点运算

    • 操作数只要有double类型,结果为double类型,否则为float类型。

    3. 取模运算

    • 操作数可为浮点型,但一般为整型。
    • 余数的符号与第一操作数相同。
    import sy.GetType;
    
    public class TestOperator {
        public static void main(String args[]) {
            GetType get = new GetType();
            short a = 10;
            int b = 100;
            Long c = 3000000000L;
            System.out.println("Type(a + b) = " + get.getType(a + b));  // java.lang.Integer
            System.out.println("Type(b + c) = " + get.getType(b + c));  // java.lang.Long
    
            double d = 3.14;
            float e = 0.1f;
            float f = 3.14f;
            System.out.println("Type(e + f) = " + get.getType(e + f));  // java.lang.Float
            System.out.println("Type(e + d) = " + get.getType(e + d));  // java.lang.Double
    
            System.out.println("10%3 = " + 10%3);       // 1
            System.out.println("10%(-3) = " + 10%(-3)); // 1
            System.out.println("-10%3 = " + -10%3);     //-1
        }

    三、赋值运算符

    public class TestOperator {
        public static void main(String args[]) {
            int a = 200;
            int b = 320;
            System.out.printf("a + b = %d
    ", a += b);          // 520
            b += 3*a - 60;
            System.out.printf("b = b + (3*a-60) = %d
    ", b);   // 1820
        }
    }

    四、关系运算符

    这里少见的就是instanceof运算符:A instanceof B,这是判断对象A是否属于类B,返回值为boolean类型。

    public class TestOperator {
        public static void main(String args[]) {
            Integer a = 233;
            System.out.println(a instanceof Integer);   // true
        }
    }

    五、逻辑运算符

    需要注意的是:逻辑运算符的两个操作数必须为boolean类型。

    逻辑与 & 两个操作数都为true才返回true;否则为false
    逻辑或 | 两个操作数都为false才返回false;否则为true
    逻辑非 ! 取反:!true==false, !false==true
    逻辑异或 ^ 两个操作数不同为true,相同为false
    短路与 && 两个操作数只要有false则为false
    短路或 || 两个操作数只要有true则为true

    逻辑(与/或)和短路(与/或)的区别是:逻辑必须处理两个操作数的值,而短路视情况而定。如短路或:只要第一个操作数为true,不需要处理第二个操作数。

    public class TestOperator {
        public static void main(String args[]) {
            int a = 5;
            System.out.print((a>8)&&(8>a--));       // false
            System.out.println("	a = " + a);       // 5
            a = 5;
            System.out.print((a>8)&(8>a--));        // false
            System.out.println("	a = " + a);       // 4
            a = 5;
            System.out.println(!((a>a--)^(8>++a))); // false
        }
    }

    六、位运算符

    需要注意的是:位运算符的两个操作数为二进制的数字。

    按位与 & 两个数字都为1才返回1,否则为0
    按位或 | 两个数字都为0才返回0,否则为1
    取反 ~ !0==1, !1==0
    按位异或 ^ 两个数字不同为1,相同为0
    左移运算符 << 左移1位,相当于乘2
    右移运算符 >> 右移1位,相当于除2
    public class TestOperator {
        public static void main(String args[]) {
            int a = 7; // 0111
            int b = 9; // 1001
            System.out.printf("a&b = %d
    ", a&b); //0001 == 1
            System.out.printf("a|b = %d
    ", a|b); //1111 == 15
            System.out.printf("a^b = %d
    ", a^b); //1110 == 14
            System.out.printf(" ~a = %d
    ",  ~a); //1000 == -8
        }
    }

    七、条件运算符

    语法格式:y = Ex ? a : b;

    含义:Ex为boolean类型的表达式,若为true则返回a的值,否则返回b的值。

    public class TestOperator {
        public static void main(String args[]) {
            float p_gift = 0.01f;
            System.out.print("恭喜你获得《");
            System.out.print(p_gift<0.1?"敲一天代码":"睡一天懒觉");
            System.out.print("》大礼包!");
        }
    }

    八、字符串连接符

    运算符+两侧的操作数只要有1个为String类型,系统会自动将另一个操作数转换为String类型,然后进行拼接。

    public class TestOperator {
        public static void main(String args[]) {
            System.out.println(76 + 4);     // 80
            System.out.println(76 + '4');   // 128 《'4'不是String类型》
            System.out.println(76 + "4");   // 764
        }
    }

     

  • 相关阅读:
    socat + kata + cgroup
    2018-8-10-卷积神经网络全面解析
    2019-8-31-PowerShell-通过-WMI-获取系统服务
    2019-8-31-PowerShell-通过-WMI-获取系统服务
    2018-2-13-不使用数据结构反转栈
    统计难题
    Keywords Search
    [JSOI2008]最大数
    Android(java)学习笔记1:多线程的引入
    欢迎使用CSDN-markdown编辑器
  • 原文地址:https://www.cnblogs.com/bpf-1024/p/12505346.html
Copyright © 2011-2022 走看看