Java学习笔记----运算符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oampZuo12345/article/details/48025151
  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三元运算符

算数运算符

1、+,-,*,/,%,++,–

2、+的用法:a:加法,b:正号,c:字符串连接符

3、/和%的区别:数据做除法操作的时候,/取得是商,%取得是余数

4、++和–的用法

        a:他们的作用是自增或者自减
        b:使用
             **单独使用
                放在操作数据的前面和后面效果一样。
                a++或者++a效果一样。
            **参与操作使用
                放在操作数的前面:先自增或者自减,再参与操作
                    int a = 10;
                    int b = ++a;
                放在操作数的后面:先参与操作,再自增或者自减
                    int a = 10;
                    int b = a++;

下面看几个代码,加深一下印象

//++,--单独使用的情况
public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 10;
        a = b++;   //a=10,b=11,c=10
        c = --a;   //a=9,b=11,c=9
        b = ++a;   //a=10,b=12,c=9
        a = c--;   //a=9,b=12,c=8

        System.out.println("a:"+a);
        System.out.println("b:"+b);
        System.out.println("c:"+c);
    }

//++,--参与操作使用
public static void main(String[] args) {
        int x =4;
        int y =(x++)+(++x)+(x*10);
        //  y = 4 + 6 + 60
        //  x = 6
        System.out.println("x:"+x);
        System.out.println("y:"+y);
    }

public static void main(String[] args) {
        /**
         * 注意&&有短路情况
         * 每步结果
         * x y k
         * 1 0 0
         * 2 0 0
         * 3 1 0
         * 4 2 0
         * 5 3 1
         * 5 3 1
         * */
        int x = 0;
        int y = 0;
        int k = 0;
        for (int z = 0; z < 5; z++) {
            if ((++x > 2) && (++y > 2) && (k++ > 2))
            {
                x++;
                ++y;
                k++;
            }

            System.out.println(x + " " +y +" " +k);
        }
        System.out.println(x + " " +y +" " +k);

    }

赋值运算符

1、=,+=,-=,*=,/=,%=等

2、=叫做赋值运算符,也是最基本的赋值运算符

3、扩展的赋值运算符的特点,隐含了自动强制转换。

下面看一道面试题,理解一下赋值运算符的特点,隐含了自动强制转换

short s = 1;
s = s + 1;
short s = 1;
s += 1;
请问上面的代码哪个有问题?

s = s + 1;//有问题,因为s+1是int类型,不能赋值给short类型
s += 1;   //没有问题,s += 1 不等价 s = s + 1
          //而是等价 s = (s的数据类型)(s + 1);

比较运算符

1、==,!=,>,>=,<,<=

2、无论运算符两端简单还是复杂最终结果是boolean类型。

3、千万不要把==写成了=

逻辑运算符

这里写图片描述

“&”和“&&”的区别

单&时,左边无论真假,右边都进行运算

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参加运算

“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。

异或(^)与或(|)的不同之处:当左右都为true时,结果为false

逻辑与(&):有false则false

逻辑或(|):有true则true

逻辑异或(^):相同为false,不同为true

逻辑非(!):偶数个不改变本身

位运算符

这里写图片描述
这里写图片描述
这里写图片描述

//^的特点,一个数据对另一个数据位异或两次,该数本身不变
 public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a ^ b ^ b); //10
        System.out.println(a ^ b ^ a);//20
    }
//面试题:请自己实现两个整数变量的交换
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("a:"+a+",b:"+b);
        //方式1:使用第三方变量(开发用)
        int temp = a;
        a = b;
        b = temp;
        System.out.println("a:"+a+",b:"+b);

        //方式2:用异或实现(面试用)  
        //左边:a,b,a  右边:a^b
        a = a ^ b; 
        b = a ^ b;  //a ^ b ^ b = a
        a = a ^ b;  //a ^ b ^ a = b
        System.out.println("a:"+a+",b:"+b);

        //方式3:用变量相加
        a = a + b; //a = 30
        b = a - b; //b = 10
        a = a - b; //c = 20
        System.out.println("a:"+a+",b:"+b);

        //方式4:一句话搞定
        b = (a+b) - (a=b);  //b=30-20  a=20
        System.out.println("a:"+a+",b:"+b);

    }

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述\

//面试题:请用最有效率的方式计算出2乘以8的结果
    2<<3

猜你喜欢

转载自blog.csdn.net/oampZuo12345/article/details/48025151