JavaSE基础 ——运算符

JAVA学习day03 javase基础语法 ——运算符

3.1 算数运算符
运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称之为操作数。
算数运算符最常见的操作就是将操作数参与数学运算,具体使用见下表:

运算符运算规则范例结果
+正号+33
+2+35
+连接字符串“中”+“国”中国
-负号int a = 3;-a-3
-3-12
*3*412
/4/22
%取模5%21
++自增int a = 1;a++/++a2
- -自减int b = 2;b- -1

我们在使用算数运算符时,记得要注意以下事项:
● 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
● 除法“ / ”当两边为整数时,取整数部分,舍余数部分。当其中一遍为浮点型时,按照正常规则相除。
● “ % ”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
● 整数做被除数,0 不能做除数,否则报错。
代码演示:

/*
 算数运算符
*/
package org.westos.cn;

public class OperatorDemo {
    public static void main(String[] args) {
        /*
        * 常量使用算数运算符
        */

        System.out.println(10+20);

        /*
        * 变量使用算数运算符
        */

        int a = 10;
        int b = 20;
        System.out.println(a+b);
        //"+"作为加法运算使用
        int c = a + b;
        //"+"作为连接字符串使用
        System.out.println("a = "+a);
    }
}

运行结果下图所示:
图1-1 运行结果
图1-1 运行结果

3.2 算数运算符++、- - 的使用

在一般情况下,算数运算符不会改变参与计算的变量值。而是在原有变量值不变的情况下,计算出新的值。但是有的操作符会改变变量的值,例如 ++ 、- - 。

● ++运算符,会在原有值的基础上自增1;
● - - 运算符,会在原有值的基础上自减1。

看下列代码:

/*
        * 自增自减
        */
        int i = 3;
        int j = 3;
        i++;
        j--;
        System.out.println(i);
        System.out.println(j);

上面代码输出的结果i的值为4,j的值为2,说明在原有值的基础上发生了改变。

再看一段代码:

        int n = 3;
        int m = 3;
        ++n;
        --m;
        System.out.println(n);
        System.out.println(m);

这段代码的输出结果 n的值为4,m为2;
这说明++、- - 运算符单独使用,不参与运算操作时,运算符前后位置导致的运算结果是一样的。

接下来说明++、- - 运算符参与操作时,发生了怎样的变化,看下面的代码:

           int a = 3;
           int b;
           b = a++ + 10;
           System.out.println(a);
           System.out.println(b);

上面代码的输出结果a的值为4,b为13;
这里要强调下,当++、- - 运算符参与运算操作时,后置++、- - 的作用:

● ++、- - 运算符后置时,先使用a的原有值参与运算操作,运算操作完成后,变量a的值自增或自减1;

再说明下++、- - 运算符前置是,参与运算操作的变化,看下面一段代码:

      int a = 3;
      int b;
      b = ++a + 10;
      System.out.println(a);
      System.out.println(b);

上面的代码的输出结果a的值为4,b的值为14;

所以当++、- - 运算符参与运算操作时,前置++、- - 的作用:

●++、- - 运算符前置时,先将变量的值自增或自减1,然后使用更新的新值再参与后面的运算。

3.3 赋值运算符
赋值运算符就是为变量赋值的符号,赋值运算符使用方法如下表:

运算符运算规则范例结果
=赋值int a = 22
+=加后赋值int a = 2;a+=24
-=减后赋值int a = 2; a-=20
*=乘后赋值int a = 2;a*=36
/=除后赋值int a = 2;a/=21
%=取模后赋值int a = 2;a%=20

注意:像+=这样的形式的赋值运算符,会将结果自动强转成等号左边的数据类型。
写一个代码,我们来看下赋值运算符的使用

public class OperatorDemo2 {
    public static void main(String[] args) {
        /*
         * 赋值运算符
         * +=, -=, *=, /=, %= :
         * 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的
         * 注意:赋值运算符左边必须是变量
         */
        byte b = 10;
        b += 20;
        System.out.println(b);
    }
}

运行结果如下图所示:
图
图 1-2 运行结果

3.4 比较运算符

比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系或是否相等关系,结果是布尔值 true 或 false。

运算符运算规则范例结果
==相等于4==3false
!=不等于4!=3true
>大于3>4false
<小于3<4true
>=大于等于4>=3true
<=小于等于4<=3false

这里需要注意的:
● 赋值运算符 = 和比较运算符 ==的区别:
(1)赋值运算符 = 是将 = 号右边的值赋值给左边的变量;
(2)比较运算符 = = 是用来判断 = =左右变量或常量是否相等的;

通过下面的代码演示这个注意事项:

        int a = 3;
        int b = 4;
        System.out.println(a = b);
        System.out.println(a == b);

上面代码的输出结果第一个值为4,第二个值为布尔值false。
运行结果如下:
在这里插入图片描述
图 1-3 运行结果

3.5 逻辑运算符
逻辑运算符是用布尔值进行运算的,运算结果为true或false。

运算符运算结果范例结果
&false&truefalse
lfalse l truetrue
^异或true^falsetrue
!!truefalse
&&短路与false&&truefalse
ll短路或true ll falsetrue

我们来看下逻辑运算符的常用方式:
● 逻辑运算符通常连接两个其他表达式来表示计算的结果布尔值;
● 当使用逻辑与或者短路或时,只要运算符前的表达式能判断出结果,运算符后面的表达式就不再判断。

下面用过代码演示一下:

package org.westos.demo1;

public class OperatorDemo3 {
    public static void main(String[] args) {
        boolean b = 100 > 99;
        boolean b1 = false;
        System.out.println(b && b1);//结果为false
        System.out.println(b || b1);//结果为true
        System.out.println(!b1);//结果位true
    }
}

运算规律:
(1)短路与 && :参与运算的两边的数据,有false,运算结果为false;
(2)短路或 || :参与运算的两边的数据,有true,运算结果为true;
(3)逻辑非:! :参与运算的数据,原先是true变为false,原先是false变为true。

3.6 三元运算符

● 格式:

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

● 运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1,若为false,结果为表达式2。

下面通过代码演示三元运算符的使用:

package org.westos.demo1;

public class OperatorDemo4 {
    public static void main(String[] args) {
        System.out.println(3 > 4 ? "正确" : "错误");

        int a = 3;
        int b = 4;
        String result = ((a == b) ? "相等" : "不相等");
        System.out.println(result);
    }
}

运行结果如下:

在这里插入图片描述
图 1-4 运行结果

3.7 运算符的优先级

下表是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算)

优先级描述运算符
1括号() 、[]
2正负号+ -
3自增自减,非++ 、- - 、!
4乘除,取余* 、/ 、%
5加减+ 、-
6移位运算<< 、>> 、>>>
7大小关系>、< 、>= 、<=
8相等关系== 、!=
9按位与&
10按位异或^
11按位或l
12逻辑与&&
13逻辑或ll
14条件运算? :
15赋值运算+= 、-= 、*= 、/= 、%=
16位赋值运算&= 、l= 、<<= 、>>= 、>>>=

下面看一段代码

package org.westos.demo1;

public class OperatorDemo5 {
    public static void main(String[] args) {
        int a = 5;
        int b = 3;
        int c = 1;
        int d = (a > b && b > c ? (c++) : (++c));
        System.out.println(d);
    }
}

运行结果如下:
在这里插入图片描述
图 1-5 运行结果

上述代码的运算执行顺序是什么?
(1)小括号优先级高,先执行它中的内容;
(2)比较运算符>优先级高于逻辑与,先完成&&两边的运算再将它们的结果逻辑与;
(3)三元运算符的条件判断结果为true,则返回表达式1 的结果 c++。

运算符的学习就到这。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值