zoukankan      html  css  js  c++  java
  • 跟着刚哥梳理java知识点——运算符(五)

    运算符:是一种特殊的符号,用以表示数据的运算、赋值和比较。

    1、算数运算符(+、-、*、/、%、++、--)

      a)除:

        int i = 12;
        int j = i / 5;            //2
        double d1 = i / 5;        //2.0
        double d2 = (double)i/5;  //2.4
        double d3 = i/5.0;        //2.4

      b)前++和后++区别

        前++:先自增一赋值给自己,后做运算赋值

        后++:先做运算赋值,后自增一赋值给自己

        int a = 10;
        int b = ++a; //a=11 b=11
           int c = a++; //a=11 c=10

        自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的!

    2、赋值运算符(+=、-=、*=、/=、%=、=)

        int i = 10;
        i += 3;//运算结果等于 i = i + 3;

      i+=3的运算结果是相当于i = i + 3,但是还是有一些区别的。

      例如:

        short s = 10;
        s = s + 3; //编译错误
        s += 3;    //既可以实现运算,又不会改变s的数据类型

      【知识点】:赋值运算+=、-=、/=、%=进行了运算但是不会改变变量的数据类型

      笔试题:

        1、考核赋值运算符使用

        int a = 1;
        a *= 0.1;
           System.out.println(a);//0
           a++;
           System.out.println(a);//1

        2、考核=和==的区别

        boolean b = false;
        if (b==true) {
          System.out.println("==结果为真");
           }
           else{
               System.out.println("==结果为假");
           }
           if(b=true){
               System.out.println("=结果为真");
           }
           else{
               System.out.println("=结果为假");
           }

        输出结果:

          ==结果为假
          =结果为真

    3、比较运算符(==、!=、<、>、<=、>=、instanceof)

      比较运算符的结果都是boolean型

      instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例

    4、逻辑运算符(&-逻辑与、&&-短路与、|-逻辑或、||-短路或、!-逻辑非、^-逻辑异或)

      a)逻辑运算符左右两边运算的变量都是boolean型。

      b)&和&&的结果是一模一样的,|和||的结果是一模一样的。

      c)&和&&的区别?

        &:不管左边是true还是false,右端都会运算。

        &&:当左边是false,那么右端则不会运算。

        所以只要当左边是false才会有区别,如果左端是true的时候,就一模一样了。

        当然我们在开发的过程中绝对推荐&&,这样可以减少右端运算的开销。

        |和||的区别就不再阐述了一样的思路。

      c)异或顾名思义,当a和b只要不一致就会返回true,都一样则返回false。

    5、位运算符(<<、>>、>>>、&、|、^、~)

      a)<< 左移(左移几位,后面用0补齐)

        3<<2 = 3*2*2=12

        0000 0000 0000 0011  = 3

        0000 0000 0000 1100  = 2的3次方 + 2的2次方 = 12

      b)>> 右移(右移几位,前面需要看第一位是0还是1,如果是1就用1补齐,如果是0就用0补齐)

        31>>2 = 7

      c) >>> 无符号右移(右移几位,前面不管第一位是0还是1,全部用0补齐)

        31>>>2 = 7

      d)&是与运算。

      e)|是异或算

      f)^异或(只要相异,就是1,否则就是0)

        0000 0000 0000 1100  = 12

         ^ 0000 0000 0000 1001 =  9

    -------------------------------------

        0000 0000 0000 0101 = 5

        所以 12 ^ 9 = 5

        g)笔试题:在讲到变量的类型转换,在不声明第三方变量的情况下互换一下a和b的值。用异或方法绝对是完美的。

        int a = 10;

        int b = 15;

        答案:

        a = a ^ b;

        b = a ^ b;

        a = a ^ b;

    6、三元运算符(? :)

      用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行。

      格式:(条件表达式)?表达式1:表达式2

      三元运算符涉及到一种成为双目数值提升(binary numeric promotion)的语言特性。所谓的双目数值提升,可以简单的理解为双目运算符的类型转换问题。

     1 char a= 'a';
     2 int i = 96;
     3 // ① 变量(基本数据类型)与常量(基本数据类型),结果自动转换为精度高的
     4 System.out.println(true?i:9.0); //结果为:96.0
     5 // ② 两个变量(基本数据类型),结果自动转换为精度高的
     6 System.out.println(true ? a : i);//结果为:97
     7 // ③ 两个常量(基本数据类型),结果自动转换为精度高的
     8 System.out.println(true ? 99 : 9.0);//结果为:99.0
     9 // ④ 只要数值类型和char类型的,如果数值类型在0-65535之间的都转成char
    10 System.out.println(true ? 1000 : 'b');//结果为:Ϩ(这可不是8 这是个符号)
  • 相关阅读:
    借Adobe XD之力,自动生成Flutter代码
    阿里云移动研发平台体验报告
    一年的时间,我出版了一本实体书
    论一个前端开发者的自我修养
    es6 中模块的使用总结
    vue前端UI框架收集
    页面布局进化史
    JSON是一种轻量级数据交换格式
    web图片裁切插件 cropper.js 详细介绍
    css3中的@font-face你真的了解吗
  • 原文地址:https://www.cnblogs.com/hzg110/p/6537022.html
Copyright © 2011-2022 走看看