Java运算符

运算符

什么是运算符?

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

Java常见的运算符

算术运算符

就是+, -, *, /, %, ++, –

package day2.operate;

public class Demo01 {
    public static void main(String[] args) {
        int a=1;
        int b=2;
        int c=3;
        int d=4;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println((double) a/b);//做一下强制类型转换,否则会输出0
    }
}

当进行算术运算符的操作时,当操作数中有long类型的参数时,结果就为long类型;否则为int类型

package day2.operate;

public class Demo02 {
    public static void main(String[] args) {
        long a=5234137913L;
        int b=123;
        short c=10;
        byte d=8;

        System.out.println(a+b+c+d);//当操作数中有long类型时,结果为long型
        System.out.println(b+c+d);//结果为int型
        System.out.println(c+d);//结果为int型

    }
}

自增,自减运算符的运算

package day2.operate;

public class Demo04 {
    public static void main(String[] args) {
        // ++ -- 一元运算符
        int a = 3;
        int b = a++;
        int c = ++a;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        //当++在变量后面时,先执行完这行代码后再自增
        //当++在变量前面时,先自增再执行这行代码
        // -- 同理

    }
}
关系运算符

就是>, <, >=, <=, ==, !=, instance of

关系运算符返回的结果是布尔值

package day2.operate;

public class Demo03 {
    public static void main(String[] args) {
        int a=10;
        int b=20;
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
    }
}
逻辑运算符

就是 &&, ||, !

逻辑运算

package day2.operate;

public class Demo06 {
    public static void main(String[] args) {
        //逻辑运算符
        // && 为 与(and) || 为 或(or)  !为 否(not)
        boolean a =true;
        boolean b=false;
        System.out.println("a && b : "+(a&&b));//false
        System.out.println("a || b : "+(a||b));//true
        System.out.println("! (a && b) : "+(!(a&&b)));//false
    }
}

逻辑运算中的短路运算:当逻辑运算中的第一个判定条件为false时,就不会判定下面的条件

package day2.operate;

public class Demo07 {
    public static void main(String[] args) {
        int a = 3;
        boolean flag = (a < 2) && (++a < 2);
        System.out.println(flag);
        //可以看出在当第一个判定为false时就会自动停止运算,不会往下运行下去
        System.out.println(a);//输出的a为3
    }
}
位运算符

就是&, |, ^, ~, >>, <<, >>>, !!!

位运算的操作对象是二进制位,所以效率很高

位运算的效率很高,在许多程序的底层算法中,有许多精巧的位运算

package day2.operate;

public class Demo08 {
    public static void main(String[] args) {
        /*
        A = 0010 1100
        B = 0001 1101

        与运算,二者都为1时取1
        A&b = 0000 1100

        或运算,二者有一个1就取1
        A|b = 0011 1101

        抑或运算,二者相同为0,不相同为1
        A^B = 1100 0001

        取反运算,取此数的补码
        ~A = 1101 0011

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

        <<    左移 相当于*2
        >>    右移 相当于/2

        0000 0001       1
        0000 0010       2
        0000 0100       4
        0000 1000       8
        0001 0000      16

         */

        System.out.println(2 << 3);//16

    }
}
赋值运算符

就是 =

package day2.operate;

public class Demo09 {
    public static void main(String[] args) {
        //给i赋一个值
        int i = 1;
    }
}
条件运算符

就是 ?:

package day2.operate;

public class Demo12 {
    public static void main(String[] args) {
        // x ? y : z
        //若x为true,则y,否则就z
        int age = 19;
        String state = age > 18 ? "成年" : "未成年";
        System.out.println(state);
    }
}
扩展赋值运算符

就是+=,-=,*=,/=

需要注意的是,+=拥有强制类型转换的功能,如果两个运算对象的数据类型不一样,精度可能会下降。

package day2.operate;

public class Demo10 {
    public static void main(String[] args) {
        int a = 3;
        int b = 1;
        a += b; //a=a+b
        //其余的也是同理
        System.out.println(a);

        //精度下降
        int c = 3;
        double d = 3.14;
        //这里自动进行了强制类型转换
        c += d;
        System.out.println(c);//输出结果为6
    }
}
字符串连接符

使用 “+” 实现

当数字类型运算之前出现字符串类型时,会将其他变量也转换成字符串类型

package day2.operate;

public class Demo11 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a + b);//会输出30
        System.out.println("" + a + b);//将a与b连接起来了,结果为1020
        System.out.println(a + b + "");//会输出30
    }
}

除以上所说的这些运算符之外,很多运算我们会使用数学工具类来计算

如幂运算

package day2.operate;

public class Demo05 {
    public static void main(String[] args) {
        double num = Math.pow(2,3);//必须是double型变量
        System.out.println(num);
    }
}

运算的优先级问题

按照优先级别的高低进行排序就是: 自加/减运算符、 算术运算符、比较运算符、逻辑运算符、赋值运算符。
优先级排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值