【Java启程】运算符


这节内容很多,但很简单又很重要。
Java种的运算符分为算术、赋值、比较、逻辑和条件五种。

算术运算符

包含五种:加+ ,减- ,乘* ,除/ 和求余% 。
该类运算符即对变量或数据进行算术运算的。对整数进行除法运算时,所得结果为舍去小数点后部分的整数。必须有小数参与运算,结果才能为小数。

public class OperatorDemo01 {
    public static void main(String[] args) {
        /*--- 算术运算符 +, -, *, /, % ---*/
        int a = 6, b = 4;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        System.out.println(a % b);
        // 整数相除只能得到整数
        System.out.println(6.0 / 4);
    }
}

运行结果:

10
2
24
1
2
1.5

准确地说,算术运算符还有以下两种:++ 和-- 。这两种叫自增自减运算符,但这两种运算对赋值有影响,所以放到赋值运算符里讲。

赋值运算符

包含6种:= ,+= ,-= ,*= ,/= 以及%= 。
赋值运算符,顾名思义其作用就是对变量进行赋值。它的核心运算符只有一个:直接赋值运算符= 。其他的五种运算符都是围绕它对原变量进行算术运算后再赋值。如b += a等价于b = b + a
自增自减运算符单独使用时对结果不产生影响,即a++等价于++a等价于a = a + 1,这一特点常被用于循环变量中。如果自增自减运算符出现在赋值语句中,则其位置会对结果产生影响:
b = a++等价于b = a; a = a +1,即先赋值后运算;
b = ++a等价于a = a +1; b = a,即先运算后赋值。

public class OperatorDemo02 {
    public static void main(String[] args) {
        /*--- 赋值运算符 =, +=, -=, *=, /=, %= ---*/
        int i = 10;
        System.out.println("i: " + i);
        i += 10;
        System.out.println("i: " + i);
        /* 注意:扩展的赋值运算符底层隐含了强制类型转换 */
        short s = 10;
        s += 10;
        // 等价于 s = (short)(s + 10);
        System.out.println("s: " + s);
        System.out.println();
        
        /*--- 自增自减运算符 ++, -- ---*/
        int i1 = 10, i2 = 10;
        // 先赋值后运算
        int j1 = i1++;
        // 先运算后赋值
        int j2 = ++i2;
        System.out.println(i1 + " " + j1);
        System.out.println(i2 + " " + j2);
    }
}

输出结果:

i: 10
i: 20
s: 20

11 10
11 11

比较运算符

包含六种:大于> ,小于< ,大于等于>= ,小于等于<= ,等于== ,不等于!= 。
比较运算符是对两边数据进行比较的。若关系成立则返回布尔值true,关系不成立则返回false。

public class OperatorDemo03 {
    public static void main(String[] args) {
        /* 关系运算符 ==, >, <, >=, <=, != */
        int i = 10;
        int j = 20;
        int k = 30;
        System.out.println(i + j == k);
        // 若将 == 写成 = ,则把j的值赋给i,然后输出i的值
        System.out.println(i = k);
    }
}

运行结果如下:

true
30

另外,== 和!= 两种运算也可对引用数据类型进行,其他四种则不行。

逻辑运算符

包含四种:且& ,或| ,非! 及异或^ 。其中 “且” 和 “或” 建议写成短路形式:&& 和|| 。
逻辑运算符用以判断两端的命题的成立关系的,所以它的两端结果必须为布尔值。
短路运算符的特点是如果第一个条件足以使结果成立/不成立,则不会再继续进行。

public class OperatorDemo04 {
    public static void main(String[] args) {
        /*
         * 逻辑运算符 &, |, ^, !, &&, ||
         * & 有false则false
         * | 有true则true
         * ^ 两边相同则false,两边相异则true
         * ! 变true为false,变false为true
         * && 左边条件false则不继续进行
         * || 左边条件true则不继续进行
         */
        System.out.println(" \"&\"");
        System.out.println(true && false);
        System.out.println(true && false);
        System.out.println(true && false);
        System.out.println(true && false);
        System.out.println();
        System.out.println(" \"|\"");
        System.out.println(true || false);
        System.out.println(true || false);
        System.out.println(true || false);
        System.out.println(true || false);
        System.out.println();
        System.out.println(" \"^\"");
        System.out.println(true ^ false);
        System.out.println(true ^ false);
        System.out.println(true ^ false);
        System.out.println(true ^ false);
        System.out.println();
        // 单独的 ! 不太便于理解,不建议使用
        System.out.println(" \"!\"");
        System.out.println(false);
        System.out.println(!false);
        System.out.println(!!false);
    }
}

运行结果如下:

 "&"
false
false
false
false

 "|"
true
true
true
true

 "^"
true
true
true
true

 "!"
false
true
false

条件运算符

条件运算符又称三元运算符,用以对关系表达式的成立与否自定义结果。

public class OperatorDemo05 {
    public static void main(String[] args) {
        /*
         * 三元运算符:关系表达式 ? 表达式1 : 表达式2;
         * 若值为true输出表达式1的值,若值为false输出表达式2的值
         */
        int a = 10, b = 20;
        // Math.max(a, b) == (a > b) ? a : b
        System.out.println("max: " + (Math.max(a, b)));
    }
}

运行结果如下:

max: 20

运算符优先级

从高到低依次为:
()
++(左),–(左),!
%,/,*
+,-
<,<=,>,>=,==,!=
&,|,^
&&,||
? :
=,*=,/=,+=,-=
(右)++,(右)–

分不清的情况下,请善用括号。

新人上路,求给意见。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值