首页 > java > basic > 7.Java运算符

7.Java运算符

Java运算符分为,算术运算符,复合运算符,关系运算符,条件运算符.

1 算数运算符

1.1 算术运算符类型

Java算数运算符包括加,减,乘,除(取模,取余).

  • 加+
int a = 1;
int b = 2;
int c = a + b;
System.out.println(c);
  • 减-
int a = 1;
int b = 2;
int c = a - b;
System.out.println(c);
  • 乘*
int a = 1;
int b = 2;
int c = a * b;
System.out.println(c);
  • 除-取模/

对整数取模运算,相当于取结果的整数,去掉余数.

int a = 1;
int b = 2;
int c = a / b;
System.out.println(c);
  • 除-取余%

对整数取余运算,相当于取得不够整除部分的数值.

int a = 1;
int b = 2;
int c = a % b;
System.out.println(c);

1.2 算数运算符赋值

java算数运算符从右往左赋值.即将等号右边的值,赋给等号左边的变量.

2 算数运算符自动类型转换

当两个类型不同的数据类型运算时,结果自动转化为取值范围大的数据.

2.1 算数运算符自动类型转换规则

  • 布尔型和其它基本数据类型之间不能相互转换.
  • byte型可以转换为short、int、、long、float和double.
  • short可转换为int、long、float和double.
  • char可转换为int、long、float和double.
  • int可转换为long、float和double.
  • long可转换为float和double.
  • float可转换为double.

Java算数运算符类型转换规则,简单来说就是根据取值范围由小到大自动转化,如下所示:

byte->short->int->long->float->double

2.2 算数运算符类型转换示例代码

package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java算数运算符
 */
public class Demo1 {
    public static void main(String[] args) {
        /** 加`+`*/
        int a = 1;
        int b = 2;
        int c = a + b;
        System.out.println(c);
        /** 减`-`*/
        a = 1;
        b = 2;
        c = a - b;
        System.out.println(c);
        /** 乘`*` */
        a = 1;
        b = 2;
        c = a * b;
        System.out.println(c);
        /** 除-取模`/`对整数取模运算,相当于取结果的整数,去掉余数.*/
        a = 1;
        b = 2;
        c = a / b;
        System.out.println(c);
        /** 除-取余`%`对整数取余运算,相当于取结果的余数.*/
        a = 1;
        b = 2;
        c = a % b;
        System.out.println(c);
    }
}

输出:

3
-1
2
0
1

Java算数运算符类型转换示例代码中需要注意的地方:

  • 取模/对整数取模运算,相当于取结果的整数,去掉余数.
  • 取余%对整数取余运算,相当于取结果的余数.

3 复合运算符

3.1 常用的复合运算符

复合运算符是一种简写.以+=为例,表示加一个值再赋值给本身.常用的复合运算符:

  • +=加法赋值 先加再赋值
a += 1;
// 等同于以下
a = a + 1;
  • -=减法赋值 先减再赋值
b -= 1;
// 等同于以下
b = b - 1;
  • *=乘法赋值 先乘再赋值
c *= 1;
// 等同于以下
c = c * 1;
  • /=除法赋值 先除再赋值
d /= 1;
// 等同于以下
d = d / 1;
  • %=取余运算赋值 先取余再赋值
e %= 1;
// 等同于以下
e = e % 1;

3.2 常用的复合运算符示例代码

package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java复合运算符
 */
public class Demo2 {
    public static void main(String[] args) {
        int a = 0;
        /** += 运算*/
        a += 1;
        System.out.println(a);
        /** -= 运算*/
        int b = 0;
        b -= 1;
        System.out.println(b);
        /** *= 运算*/
        int c = 2;
        c *= 3;
        System.out.println(c);
        /** /= 运算*/
        int d = 5;
        d /= 3;
        System.out.println(d);
        /** %= 运算*/
        int e = 5;
        e %= 3;
        System.out.println(e);
    }
}

输出:

1
-1
6
1
2

4 自增运算符++和自减运算符--

4.1 自增运算符++

java自增运算符分前缀式(如++i)和后缀式(如i++).以自增运算符(++)为例:前缀式是先加1再使用,后缀式是先使用再加1.

  • java单独执行自增自减时前缀式,后缀式单独执行结果一样

java代码:

int i = 0;
i++;
System.out.println(i);
int j = 0;
++j;
System.out.println(j);
  • 放在运算过程中执行.前缀,后缀放在运算过程中结果不同.

java代码:

/** 后缀式*/
/** 初始化a和i*/
a = 0;
i = 0;
a = i++;
/** i使用前是0,此时i为0不加1,a为0. */
System.out.println(a);
/** 使用后i加1,i为1*/
System.out.println(i);

4.2 自增运算符--

java自减运算符--原理同自增运算符,只是加1,变成了减1.

4.3 自增运算符++和自减运算符--示例代码

Java代码

package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java自增,自减运算符
 */
public class Demo3 {
    public static void main(String[] args) {
        /** 前缀,后缀单独执行结果一样*/
        int i = 0;
        i++;
        System.out.println(i);
        int j = 0;
        ++j;
        System.out.println(j);
        /** 前缀,后缀放在运算过程中结果不同*/
        /** 前缀式*/
        int a = 0;
        i = 0;
        a = ++i;
        /** i使用前加1,此时i为1,a为1. */
        System.out.println(a);
        /** 使用后i加1,i为1*/
        System.out.println(i);

        /** 后缀式*/
        /** 初始化a和i*/
        a = 0;
        i = 0;
        a = i++;
        /** i使用前是0,此时i为0不加1,a为0. */
        System.out.println(a);
        /** 使用后i加1,i为1*/
        System.out.println(i);
    }
}

输出:

1
1
1
1
0
1

java示例代码中需要注意的地方:

  • 倒数第二个输出是0,这个就是后缀式的使用后计算导致的结果.

5 关系运算符

关系运算符用于比较两个数值之间的大小. 其运算结果为一个布尔值(boolean),只有true(真)和false(假)两个取值.

5.1 基本数据类型的关系运算符

  • >大于
  • <小于
  • >=大于或等于
  • <=小于或等于
  • ==等于
  • !=不等于

5.2 基本数据类型的关系运算符示例代码

java代码:

package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java关系运算符
 */
public class Demo4 {
    public static void main(String[] args) {
        int a = 0;
        int b = 0;
        boolean c = a > b;
        System.out.println(c);
        boolean d = a < b;
        System.out.println(d);
        boolean e = a == b;
        System.out.println(e);
        boolean f = a == b;
        System.out.println(f);
    }
}

输出:

false
false
true
true

6 逻辑运算符

逻辑运算符主要用于进行条件真(true)假(false)运算.包括&&(且),||(或),!(异或) ,^(非),instanceof(判断对象实例类型).

6.1 逻辑运算符类型

  • &&且

两目运算符,需要2个值参与运算.符号两边的条件都为true,运算结果为true.如果任一条件为false,结果为false.

boolean a = true;
boolean b = false;
boolean c = a && b;
// a和b里不同时为true,故`&&`运算的结果为false
System.out.println(c);
  • ||或

两目运算符,需要2个值参与运算.符号两边的条如果任一条件为true,结果为true.如果都为false,结果为false.

boolean a = true;
boolean b = false;
boolean c = a || b;
// a和b里面,a为true,故`||`运算的结果为true
System.out.println(c);
  • !非

单目运算符,需要1个值参与运算.得到与原布尔值相反的值.原值为true,经过!运算,得false.原值为false,经过!运算,得true.

boolean a = true;
boolean c = !a;
// c为 a的相反值,即为false
System.out.println(c);
  • ^异或

两目运算符,需要2个值参与运算.符号两边的布尔结果不同时,结果为true.如果相同(同时为true,或者同时为false),结果为false.

boolean a = true;
boolean b = false;
boolean c = false;
boolean d = a ^ b;
boolean e = b ^ c;
// a和b里不同,故`^`运算的结果为false,d为false
System.out.println(d);
// c和d里同时为false,故`^`运算的结果为true,e为true
System.out.println(e);

6.2 逻辑运算符示例代码

package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java逻辑运算符
 */
public class Demo5 {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        boolean c = a && b;
        /** a和b里不同时为true,故`&&`运算的结果为false*/
        System.out.println(c);
        a = true;
        b = false;
        c = a || b;
        /** a和b里面,a为true,故`||`运算的结果为true*/
        System.out.println(c);
        a = true;
        c = !a;
        /** c为 a的相反值,即为false*/
        System.out.println(c);
        a = true;
        b = false;
        c = false;
        boolean d = a ^ b;
        boolean e = b ^ c;
        /** a和b里不同,故`^`运算的结果为true,d为true*/
        System.out.println(d);
        /** c和d里同时为false,故`^`运算的结果为false,e为false*/
        System.out.println(e);
    }
}

输出:

false
true
false
true
false

Java逻辑运算符示例代码需要注意的地方:

  • a和b里不同时为true,故&&运算的结果为false.
  • a和b里面,a为true,故||运算的结果为true.
  • a和b里不同,故^运算的结果为true,d为true.
  • c和d里同时为false,故^运算的结果为false,e为false.

7 条件运算符

由?和:两个符号组成,要求有3个操作对象,所以也叫三目运算符.

7.1 条件运算符格式

a<b?a:b;

7.2 条件运算符规则

如果?前边的表达式(a<b)为true,取:前边的值,即a值.如果?前边的表达式(a<b)为false,取:后边的值,即b值.

7.3 条件运算符示例代码

java代码:

package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java三目运算符
 */
public class Demo6 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = a > b ? a : b;
        /** a > b 为false,所以取":"后边的值b赋值给c,故c为2.*/
        System.out.println(c);
    }
}

输出:

2

Java条件运算符示例代码需要注意的地方:

  • a > b 为false,所以取":"后边的值b赋值给c,故c为2.

8 运算符优先级

8.1 运算符优先级基本原则

  • 有括号先算括号里.
  • 先乘除后加减.
  • 乘除都有时,从左往右依次计算.
  • 加减从左往右依次计算.

8.2 运算符优先级示例代码

  • 乘除优先级示例代码
int a = 1;
int b = 2;
int c = 3;
int d = a + b * c;
/** 乘号的优先级比加号高,先算b*c再加a,故d为7*/
System.out.println(d);
  • 加减乘除运算符混合示例代码
package com.dashidan.lesson7;

/**
 * 大屎蛋教程网-dashidan.com
 * <p>
 * Java教程基础篇: 7.Java运算符
 * Java运算符优先级
 */
public class Demo7 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = 3;
        int d = a + b * c;
        /** 乘号的优先级比加号高,先算b*c再加a,故d为7*/
        System.out.println(d);
        /** 加减乘除混合*/
        a = 1;
        b = 2;
        c = 3;
        d = 4;
        d = a + b * c / d - 5;
        /** 乘号和除号的优先级比加号高,先算乘除,从左往右,b*c得6,d(值为4),`6/4`得`1.5`.取模运算省去小数,`b*c/d`得1*/
        /** 加减法从左往右计算,a+1-5得-3,赋值给d.故d为-3.*/
        System.out.println(d);
    }
}

输出:

7
-3

Java条件运算符示例代码需要注意的地方:

  • 乘号和除号的优先级比加号高,先算乘除,从左往右,bc得6,d(值为4),6/4得1.5.取模运算省去小数,bc/d得1.
  • 加减法从左往右计算,a+1-5得-3,赋值给d.故d为-3.

9 运算符优先级表

Java运算符优先级表
优先级 符号 名称 结合性
1 . 从左到右
( ) 圆括号 从左到右
[ ] 方括号 从左到右
2 + 正号 从右到左
- 负号 从右到左
++ 自增 从右到左
- - 自减 从右到左
~ 按位非/取补运算 从右到左
逻辑非 从右到左
3 * 从左到右
/ 从左到右
% 取余 从左到右
4 + 从左到右
- 从左到右
5 <<  左移位运算符 从左到右
>>  带符号右移位运算符 从左到右
>>>  无符号右移 从左到右
6 小于 从左到右
<= 小于或等于 从左到右
大于 从左到右
>= 大于或等于 从左到右
instanceof 对象是否属于指定的类 从左到右
7 == 等于 从左到右
!= 不等于 从左到右
8 & 按位与 从左到右
9 | 按位或 从左到右
10 ^ 按位异或 从左到右
11 && 短路与 从左到右
12 || 短路或 从左到右
13 ?: 条件运算符 从右到左
14 = 赋值运算符 从右到左
+= 混合赋值运算符
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
>>>=
转载请保留原文链接.