Unit6Java运算符

Unit6Java运算符

一、Java中的运算符

  • 编码规范:运算符左右两侧加空格

  • 分类:

    1. 赋值运算符

    2. 算术运算符

    3. 关系运算符

    4. 逻辑运算符

    5. 扩展的赋值运算符

    6. 位运算符

    7. 移位运算符

二、赋值运算符

  • =赋值,不是比较,使用注意两点

    • =两侧类型一样吗

    • 超出范围了嘛

      int age = 23;
      byte height = 300;//超范围,报错;
      int weight = 98.5;//高级类型给低级类型;

三、算术运算符

  • + - * / %
    ++ -- 左右两侧不加空格
  • 加号做数学计算和字符串连接;整数除以0,错误;小数除以0正确;%求余数;自加自减不能用于常量

    public class Test1 {
       public static void main(String[] args) {
    //       +:两个作用,数学加法,字符串连接,- * / 用于数学计算
           int age = 20;
           String name = "Jack";
           System.out.println(name + age);// 连接
           System.out.println(3 + 2 + "abc");
           System.out.println("abc" + 3 + 2);
           String x = 36 + "";// 把数字36转为字符串
           System.out.println(3/2);// 结果:1
           System.out.println(3.0/2);// 结果:1.5
           System.out.println(2/3);// 结果:0
           //System.out.println(3/0);// 报错
           System.out.println(3.0/ 0);// Infinity无限大
           System.out.println(0.0/0.0);// NaN非数字
           System.out.println(3%2);// 结果:1
           System.out.println(-3%2); // 结果:-1
           System.out.println(2 % 3); // 结果:2
           System.out.println(-2 % 3);// 结果:-2
           //System.out.println(3%0); // 报错
           System.out.println(3.0%0); // NaN非数字
           System.out.println(3.0 % 2); // 结果:1.0
           int age2 = 10;
           System.out.println(age2++);// 先用再加
           System.out.println(++age2);// 先加再用
           System.out.println(1 - 0.9);// 结果:0.09999999999999998
      }
    }

四、关系运算符

  • 用于比较,结果是true或false,用于判断、循环条件

    > < >= <= != ==
    public class Test2 {
       public static void main(String[] args) {
           int age = 23;
           int tage = 34;
           System.out.println(age>tage);
           System.out.println(tage >= age);
           System.out.println(tage != age);
           System.out.println(tage == age);
      }
    }

五、逻辑运算符

  • 结果是true或false,用于判断,循环条件

    &(与) &&(短路与)
    |(或) ||(短路或)
    public class Test3 {
       public static void main(String[] args) {
           int a = 1;
           int b =5;
           if (a < 0 && ++b > 0) {
               System.out.println(b);
          }
           if (a < 0 & ++b > 0) {
               System.out.println(b);
          }

           int c = 6;
           int d = 7;
           if (c == 6 || ++d > 0) {
               System.out.println(d);
          }
           if (c == 6 | ++d > 0) {
               System.out.println(d);
          }
      }
    }
  • 短路与非短路的区别:

    • &&和||:如果前面的表达式已经能确定整个表达式的结果了,后面的表达式不执行,效率较高

    • &和|:所有表达式都会执行

六、扩展的赋值运算符

  • a+=2;a-=2;a*=2;a/=2;a%=2;

    short age = 20;
    age = age + 3;//报错
    age+=3;//OK

七、位运算符与移位运算符

  • &与 |或 ^异或

>> 右移
<< 左移
>>> 无符号右移
<<< 无符号左移

八、面试题

  1. &与&&的区别

    &&,如果前面的表达式已经能确定整个表达式的结果,不会执行后面的

    &,是整个表达式都执行

  2. |与||的区别

    ||,如果前面的表达式已经能确定整个表达式的结果,不会执行后面的

    |,是整个表达式都执行

  3. 3/0的结果

    报错

  4. 3.0/0的结果

    Infinity无限大

  5. 3/2的结果

    1

  6. 2.0-1.9的结果?

    0.10000000000000009

  7. 2%3结果

    2

九、任务

  1. 用户输入秒数,输出几小时几分几秒。如:用户输入3452秒

    public class Time {
       public String calcTime(int second) {
           int hour = second/60/60;
           int minutes = second/60%60;
           int resecond = second%60;
           return hour + "小时" + minutes + "分钟" + resecond + "秒";
      }
    }
    // 测试类
    public class Test {
       public static void main(String[] args) {
           Time time = new Time();
           Scanner scanner = new Scanner(System.in);
           System.out.println("请输入秒数:");
           int second = scanner.nextInt();
           System.out.println(time.calcTime(second));
      }
    }
  2. 圣诞商品打8折,顾客打折后的消费金额是2564元,请计算实际消费金额

    public class money {
       public float calcMoney(float money, float discount) {
           float realMoney = money / discount;
           return realMoney;
      }
    }
    // 测试类
    public class Test {
       public static void main(String[] args) {
           money money = new money();
           Scanner scanner = new Scanner(System.in);
           System.out.println("请输入消费金额:");
           float cmoney = scanner.nextFloat();
           System.out.println("请输入折扣");
           float discount = scanner.nextFloat();
           System.out.println("实际消费额为:"+money.calcMoney(cmoney, discount)+"元");
      }
    }



posted @ 2021-02-09 21:22  若你  阅读(71)  评论(0)    收藏  举报