zoukankan      html  css  js  c++  java
  • java 基本语法(三) 运算符

    1-算术运算符

    1.算术运算符: + - + - * / % (前)++ (后)++ (前)-- (后)-- +
    【典型代码】
    //除号:/
    int num1 = 12;
    int num2 = 5;
    int result1 = num1 / num2;
    System.out.println(result1);//2
    // %:取余运算
    //结果的符号与被模数的符号相同
    //开发中,经常使用%来判断能否被除尽的情况。
    int m1 = 12;
    int n1 = 5;
    System.out.println("m1 % n1 = " + m1 % n1);

    int m2 = -12;
    int n2 = 5;
    System.out.println("m2 % n2 = " + m2 % n2);

    int m3 = 12;
    int n3 = -5;
    System.out.println("m3 % n3 = " + m3 % n3);

    int m4 = -12;
    int n4 = -5;
    System.out.println("m4 % n4 = " + m4 % n4);
    //(前)++ :先自增1,后运算
    //(后)++ :先运算,后自增1
    int a1 = 10;
    int b1 = ++a1;
    System.out.println("a1 = " + a1 + ",b1 = " + b1);

    int a2 = 10;
    int b2 = a2++;
    System.out.println("a2 = " + a2 + ",b2 = " + b2);

    int a3 = 10;
    ++a3;//a3++;
    int b3 = a3;
    //(前)-- :先自减1,后运算
    //(后)-- :先运算,后自减1

    int a4 = 10;
    int b4 = a4--;//int b4 = --a4;
    System.out.println("a4 = " + a4 + ",b4 = " + b4);
    【特别说明的】
    1.//(前)++ :先自增1,后运算
    //(后)++ :先运算,后自增1
    2.//(前)-- :先自减1,后运算
    //(后)-- :先运算,后自减1
    3.连接符:+:只能使用在String与其他数据类型变量之间使用。

    2-赋值运算符

    2.赋值运算符:= += -= *= /= %=
    【典型代码】
    int i2,j2;
    //连续赋值
    i2 = j2 = 10;
    //***************
    int i3 = 10,j3 = 20;
    int num1 = 10;
    num1 += 2;//num1 = num1 + 2;
    System.out.println(num1);//12

    int num2 = 12;
    num2 %= 5;//num2 = num2 % 5;
    System.out.println(num2);

    short s1 = 10;
    //s1 = s1 + 2;//编译失败
    s1 += 2;//结论:不会改变变量本身的数据类型
    System.out.println(s1);

    【特别说明的】
    1.运算的结果不会改变变量本身的数据类型
    2.
    //开发中,如果希望变量实现+2的操作,有几种方法?(前提:int num = 10;)
    //方式一:num = num + 2;
    //方式二:num += 2; (推荐)

    //开发中,如果希望变量实现+1的操作,有几种方法?(前提:int num = 10;)
    //方式一:num = num + 1;
    //方式二:num += 1;
    //方式三:num++; (推荐)

    3-比较运算符

    3.比较运算符(关系运算符): == != > < >= <= instanceof
    【典型代码】
    int i = 10;
    int j = 20;

    System.out.println(i == j);//false
    System.out.println(i = j);//20

    boolean b1 = true;
    boolean b2 = false;
    System.out.println(b2 == b1);//false
    System.out.println(b2 = b1);//true
    【特别说明的】
    1.比较运算符的结果是boolean类型
    2.> < >= <= :只能使用在数值类型的数据之间。
    3. == 和 !=: 不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间。
    Account acct1 = new Account(1000);
    Account acct2 = new Account(1000);
    boolean b1 = (acct1 == acct2);//比较两个Account是否是同一个账户。
    boolean b2 = (acct1 != acct2);//

     4-逻辑运算符

    4.逻辑运算符:& && | || ! ^
    【典型代码】
    //区分& 与 &&
    //相同点1:& 与 && 的运算结果相同
    //相同点2:当符号左边是true时,二者都会执行符号右边的运算
    //不同点:当符号左边是false时,&继续执行符号右边的运算。&&不再执行符号右边的运算。
    //开发中,推荐使用&&
    boolean b1 = true;
    b1 = false;
    int num1 = 10;
    if(b1 & (num1++ > 0)){
    System.out.println("我现在在北京");
    }else{
    System.out.println("我现在在南京");
    }

    System.out.println("num1 = " + num1);

    boolean b2 = true;
    b2 = false;
    int num2 = 10;
    if(b2 && (num2++ > 0)){
    System.out.println("我现在在北京");
    }else{
    System.out.println("我现在在南京");
    }

    System.out.println("num2 = " + num2);

    // 区分:| 与 ||
    //相同点1:| 与 || 的运算结果相同
    //相同点2:当符号左边是false时,二者都会执行符号右边的运算
    //不同点3:当符号左边是true时,|继续执行符号右边的运算,而||不再执行符号右边的运算
    //开发中,推荐使用||
    boolean b3 = false;
    b3 = true;
    int num3 = 10;
    if(b3 | (num3++ > 0)){
    System.out.println("我现在在北京");
    }else{
    System.out.println("我现在在南京");
    }
    System.out.println("num3 = " + num3);


    boolean b4 = false;
    b4 = true;
    int num4 = 10;
    if(b4 || (num4++ > 0)){
    System.out.println("我现在在北京");
    }else{
    System.out.println("我现在在南京");
    }
    System.out.println("num4 = " + num4);
    【特别说明的】
    1.逻辑运算符操作的都是boolean类型的变量。而且结果也是boolean类型

     5-位运算符

    5.位运算符:<< >> >>> & | ^ ~
    【典型代码】
    int i = 21;
    i = -21;
    System.out.println("i << 2 :" + (i << 2));
    System.out.println("i << 3 :" + (i << 3));
    System.out.println("i << 27 :" + (i << 27));

    int m = 12;
    int n = 5;
    System.out.println("m & n :" + (m & n));
    System.out.println("m | n :" + (m | n));
    System.out.println("m ^ n :" + (m ^ n));
    【面试题】 你能否写出最高效的2 * 8的实现方式?
    答案:2 << 3 或 8 << 1
    【特别说明的】
    1. 位运算符操作的都是整型的数据
    2. << :在一定范围内,每向左移1位,相当于 * 2
    >> :在一定范围内,每向右移1位,相当于 / 2

    典型题目:
    1.交换两个变量的值。
    2.实现60的二进制到十六进制的转换

     6-三元运算符

    6.三元运算符:(条件表达式)? 表达式1 : 表达式2
    【典型代码】
    1.获取两个整数的较大值
    2.获取三个数的最大值
    【特别说明的】
    1. 说明
    ① 条件表达式的结果为boolean类型
    ② 根据条件表达式真或假,决定执行表达式1,还是表达式2.
    如果表达式为true,则执行表达式1。
    如果表达式为false,则执行表达式2。
    ③ 表达式1 和表达式2要求是一致的。
    ④ 三元运算符可以嵌套使用
    2.
    凡是可以使用三元运算符的地方,都可以改写为if-else
    反之,不成立。
    3. 如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁、执行效率高。

  • 相关阅读:
    boost::asio在VS2008下的编译错误
    Java集合框架——接口
    ACM POJ 3981 字符串替换(简单题)
    ACM HDU 1042 N!(高精度计算阶乘)
    OneTwoThree (Uva)
    ACM POJ 3979 分数加减法(水题)
    ACM HDU 4004 The Frog's Games(2011ACM大连赛区第四题)
    Hexadecimal View (2011ACM亚洲大连赛区现场赛D题)
    ACM HDU 4002 Find the maximum(2011年大连赛区网络赛第二题)
    ACM HDU 4001 To Miss Our Children Time (2011ACM大连赛区网络赛)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13308893.html
Copyright © 2011-2022 走看看