快捷搜索: 王者荣耀 脱发

JavaSE基础语法之运算符

目录


前言

一、分类

Java中运算符可分为:

算术运算符(+-*/) 关系运算符(<>==) 逻辑运算符 位运算符 移位运算符 条件运算符等

二、算数运算符

1.基本四则运算符:加减乘除模(+ - * / %)

注意事项:

做除法和取模时,右操作数不能为0 %不仅能对整数取模,还能对double类型取模(C的操作数只能是整数) 两侧操作数不一致时,向类型大的提升

代码示例:

public class Operator {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        System.out.println(a % b);
        double c = 2.2;
        System.out.println(a % c);
    }
}

运行结果:

2.增量运算符(+= -= *= /= %=)

用法与C语言完全相同,左操作数只能是变量

3.自增/自减运算符(++ --)

三、关系运算符

关系运算符有六个:==,!=,<,>,<=,>=

注意事项:

计算结果是true和false 不再能出现类似3< a < 5的写法,就是因为boolean类型和int型无法比较

四、逻辑运算符

逻辑运算符有三个:&&,||,!

注意事项:

逻辑&&和||都遵循短路求值的规则,与C相同,再强调一遍

即&&左侧的结果为false时,就不再计算右侧表达式,||左侧的结果为true时,就不再计算右侧表达式

代码示例:

public static void main(String[] args) {
    int a = 1;
    int b = 0;
    if((a == 0) && (a/b == 3));
    if((a == 1) || (a/b == 2));
    System.out.println("程序通过");
}

运行结果:

结论:我们知道,除法运算右侧表达式不能为0,否则会报错,但由于短路求值规则,程序正常编译通过

逻辑运算符的表达式都只能是布尔表达式 &和|如果表达式结果为boolean,也表示逻辑运算,但与&&和||相比,它们不支持短路求值(与表达式是boolean类型有关,了解即可)

 五、位运算符

位运算符有四个:&,|,~,^,除~是一元运算符外,其他都是二元运算符

注意:

由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替 移动负数位或者移位位数过大都没有意义

六、移位运算(了解即可)

移位运算符有三个:>,>>>,都是二元运算符

1.左移<<:最左侧位丢掉,最右侧补0

注意:

向左移位时,丢失的是符号位,因此正数左移可能会变成负数

代码示例:

public static void main(String[] args) {
    //010000000000000000000000000000000
    int n = 1073741824;
    System.out.println(n<<1);
}

运行结果:

2.有符号右移>>:最右侧位丢掉,最左侧补符号位

3.无符号右移>>>:最右侧丢掉,最左侧补0

七、条件运算符

只有一个,即:表达式1 ? 表达式2 : 表达式3

注意:

表达式1计算结果必须是boolean类型 表达式2和表达式3的结果需要是同类型的,除非赋值给变量时能发生隐式类型转换 条件运算符的表达式不能单独存在,其产生的结果必须要使用

八、运算符的优先级

Java运算符的优先级和C相同,不必记忆,在可能存在歧义的代码中加入括号即可


总结

经验分享 程序员 微信小程序 职场和发展