> 技术文档 > Java篇第二章:运算符

Java篇第二章:运算符

目录

前言

1. 算数运算符

1.1 基本运算符

1.2 增量运算符

1.3 自增/自减运算符

2.关系运算符

3. 逻辑运算符

4. 位运算符

5. 条件运算符

6.运算符优先级

结语


前言

上期我们学习了java中的数据类型以及变量,那么本期我们一起来学习一下Java中一些常见的运算符吧。

1. 算数运算符

算数运算符是用来执行数学计算的运算符,接下来一起来看看有哪些算数运算符吧

1.1 基本运算符

基本运算符就是用来进行加减乘除等运算操作的,基本的算数运算符包括加减乘除取余(+、-、*、/、%)

使用方式:

public class Test { public static void main(String[] args) { int a = 20; int b = 10; System.out.println(a + b); // 30 System.out.println(a - b); // 10 System.out.println(a * b); // 200 System.out.println(a / b); // 2 System.out.println(a % b); // 0 --->模运算相当于数学中除法的余数 }}

注意:int / int 结果还是int类型,而且会向下取整:

public class Test { public static void main(String[] args) { int a = 7; int b = 3; System.out.println(a / b);//2 //想要得到小数部分,在计算前将一个操作数强制转换成double或者floatl类型即可 double c=(double)a/b; System.out.println(c); }}

算数运算符都是二元操作符,使用时左右两边必须都要有操作数,并且做除法和取余时,右操作数不能为0

1.2 增量运算符

增量操作符操作完成后,会将运算后的结果赋值给左操作数

例如:

public class Test { public static void main(String[] args) { int a=1; a+=1;//相当于a=a+1; System.out.println(a);//2 int b=2; b-=1;//相当于b=b-1; System.out.println(b);//1 int c=3; c*=3;//相当于c=c*3; System.out.println(c);//9 int d=4; d/=2;//相当于d=d/2; System.out.println(d);//2 int e=5; e%=2;//相当于e=e%2; System.out.println(e);//1 }

注意:只有变量才能使用这类操作符,常量不能使用。

1.3 自增/自减运算符

(1)自增运算符(++)分为前置++和后置++;

   前置++:是先将变量的值进行+1再使用该变量

public class Test { public static void main(String[] args) { int a=2; int b=++a;//先将a的值进行+1,再赋值给b System.out.println(\"a=\"+a); System.out.println(\"b=\"+b); }}

       后置++:是先使用该变量,使用结束后,再将变量本身进行+1

public class Test { public static void main(String[] args) { int a=2; int b=a++;//先将a的值赋值给b,赋值完成后再对a本身进行+1 System.out.println(\"a=\"+a); System.out.println(\"b=\"+b); }}

(2)自减运算符(--) 也分为前置--和后置--,使用原理与自增运算符相同:

public class Test { public static void main(String[] args) { int a=2; int b=--a;//先将a的值进行-1,再将a赋值给b System.out.println(a);// 1 System.out.println(b);// 1 int c=2; int d=c--;//先将C的值赋值给d,再将c的值进行-1 System.out.println(c);// 1 System.out.println(d);// 2 }}

2.关系运算符

关系运算符主要有6种:==、!=、、=,当表达式成立时,返回值为true,当表达式不成立时返回值为false。

int a = 10;int b = 20;// 注意:在Java中 = 表示赋值,要与数学中的含义区分// 在Java中 == 表示相等System.out.println(a == b); // falseSystem.out.println(a != b); // trueSystem.out.println(a  b); // falseSystem.out.println(a = b); // false

注意:当需要进行多次判断时,不能连着写,例如:4<a<6,程序与数学不同,所以这时候我们应该借助逻辑运算符进行多次判断。

3. 逻辑运算符

逻辑运算符主要包括三个:&&(与)、||(或)、!(非),运算结果的返回值都是boolean类型即true或者false

(1) 逻辑与 --- &&

语法规则:表达式1 &&表达式2

public class Test { public static void main(String[] args) { int a=10,b=30; System.out.println(a==10 && b>a);// 左右表达式的结果都为真,所以结果为true System.out.println(a==10 && a>b);// 左为真、右为假,所以结果为false System.out.println(a!=10 && a>b);// 左右表达式的结果都为假,所以结果为false System.out.println(a!=10 && b>a);// 左为假、右为真,所以结果为false }}

只有左右两个表达式都为真,结果才为真,只要有一个为假,结果就是假 。

(2) 逻辑或 --- ||

语法规则:表达式1 || 表达式2

public class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a == 10 || b == 20); // 左为真 且 右为真 则结果为true System.out.println(a == 10 || b > 100); // 左为真 但 右为假 则结果也为true System.out.println(a > 100 || b == 20); // 左为假 但 右为真 则结果也为true System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为false }

只要左右表达式有一个为真,那么结果就是真,只有左右表达式都为假,结果才为假。

(3) 逻辑非--- !

语法规则: ! 表达式

public class Test { public static void main(String[] args) { int a = 10; System.out.println(!(a == 10)); // a == 10 为true,取个非就是!true,就是false System.out.println(!(a != 10)); // a != 10 为false,取个非就是!false,就是true }}

逻辑非的作用就是将真变假,假变真。 

(4) 短路求值

&& || 遵守短路求值的规则

public class Test { public static void main(String[] args) { System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true }}

我们都知道 , 计算 10 / 0 会导致程序抛出异常 . 但是上面的代码却能正常运行 , 说明 10 / 0 并没有真正被求值 如果表达式结果为 boolean , 也表示逻辑运算:

public class Test { public static void main(String[] args) { System.out.println(10 > 20 & 10 / 0 == 0); // 程序抛出异常 System.out.println(10 < 20 | 10 / 0 == 0); // 程序抛出异常 }}

总结:

1. 对于 && , 如果 左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式 . 2. 对于 ||, 如果 左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式 . 3. & | 如果表达式结果为 boolean , 也表示逻辑运算 . 但与 && || 相比 , 它们不支持短路求值 .

4. 位运算符

计算机中都是使用二进制位来表示数据的,位运算符就是对二进制位进行操作的。

(1)按位与 &:如果两个2进制位都是1,计算结果则为1,否则结果为0

public class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a & b);// 结果为0 }}

画图演示:

(2)  按位或 |: 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

public class Test { public static void main(String[] args) { int a = 10; int b = 20; System.out.println(a | b);//结果为30 }}

画图演示:

(3) 按位取反 ~: 如果该位为 0 则转为 1, 如果该位为 1 则转为 0  

public class Test { public static void main(String[] args) { int a = 10; System.out.println(~a);//结果为-11 }}

画图演示:

(4) 按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

public class Test { public static void main(String[] args) { int a = 5; int b = 15; System.out.println(a^b);//结果为10 }}

画图演示:

注意:按位运算符都是对二进制补码进行操作的,正数源码、反码、补码相同,除了 ~ 是一元运算符外,其余都是二元运算符。

5. 条件运算符

条件运算符也叫做三目操作符,是条件判断语句的简化写法

例如:求两个数较大值

// 求两个整数的最大值int a = 10;int b = 20;int max = a > b ? a : b;//如果a>b,那么将a的值赋给max,否则将b的值赋值给max;

注意:表达式不能单独存在,产生的结果必须要被使用

6.运算符优先级

在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如: * / 的优先级要高于 + 和 -,具体的优先级规则我们 不必记忆 . 在可能存在歧义的代码中加上括号即可

public class Test { public static void main(String[] args) { int a=10; int b=20; System.out.println((a+b)%4);//a+b=30,30%4=2 }}

结语

以上就是java中常用的运算符,希望大家看完本篇后能够有所收获,能够掌握这些运算符的用法,在此感谢大家的观看!!!