什么是运算符
运算符是一种特殊的符号,用于表示数据的运算,赋值和比较等。
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 三元运算符
算术运算符
基本介绍
算术运算符是用于对数值进行运算,在Java程序使用比较多
算术运算符表格
运算符的使用
- +,-,*,/,%,++,--,重点讲解/,%,++
// /的使用
System.out.println(10/4); //数学反面是2.5,但是在java是2
System.out.println(10.0/4);java2.5
double a = 10/4;//因为java10/4是2,2=>2.0
System.out.println(a);//2.0
// % 取模,取余、
System.out.println(10%3);//1
System.out.println(-10%3);//-1
System.out.println(10%-3);//1
System.out.println(-10%-3);//-1
// ++ 的使用
int i= 1;
++i;//等价于i= i+1;所以i=2;
i++;//等价于i= i+1;所以i=3;
System.out.println(i);//3
/*
作为表达式
++i;前++,先自增,在赋值
i++;后++,先赋值,在自增
*/
int a = 1;
int b= a++;
System.out.println("a="+a+"b="+b);//a=2 b=1;
- 自增:++作为独立语句使用,前++ 和 后++ 都等价于i=i+1;作为表达式使用:前++表示先加后赋值,后++表示先赋值后++。
// ++ 的使用
int i= 1;
++i;//等价于i= i+1;所以i=2;
i++;//等价于i= i+1;所以i=3;
System.out.println(i);//3
/*
作为表达式
++i;前++,先自增,在赋值
i++;后++,先赋值,在自增
*/
int a = 1;
int b= a++;
System.out.println("a="+a+"b="+b);//a=2 b=1;
- --运算符 也是一个道理。
细节说明
1.对于除号"/",它的整数除和小数除是有区别的:整数之间用除法;只会保留整数部分,小数部分会被舍去。
2.对于取模时,可以等价于a%b=a-a/b*b;
3.当把自增当作一个独立的语言使用时,不管是++i;还是i++;都一样的。
4.当自增单做一个表达式使用时 j= i++;等价于j =i,i=i+1;
5.当自增单做一个表达式使用时 j= ++i;等价于j = i+1;
关系运算符
基本介绍
关系运算符都是double类型,也就是true或者fales
关系表达式,用在if语句和循环语句比较多
关系运算符表格
细节说明
- 关系运算符的结果都是boolean类型,也就是要么是true,要么是false。
- 关系运算符组成的表达式,我们称为关系表达式。
- 比较运算符"==" 不能写成"="。
逻辑运算符
基本介绍
用于连接个关系表达式,最终的结果也是boolea。
逻辑运算符表格
短路与&&,短路或||,取反!
逻辑与&,逻辑或|,逻辑异或^
逻辑运算符的规则
- a&b,叫逻辑与,当a和b同时为true,结果为true,否则为false。
- a&&b,叫短路与,当a和b同时为true,结果为true,否则为false。
- a|b,叫逻辑或,当a和b有一个为true,结果为true,否则为false。
- a||b,叫短路或,当a和b有一个为true,结果为true,否则为false。
- !a,叫取反,当a为true,结果为false,当a为false,结果为true。
- a^b,叫逻辑异或,当a和b不同时,结果为true,否则为false。
短路与和逻辑与的区别
&&短路与:如果第一个条件为false,那么第二个条件不会判断(不会执行),因为结果都是false,效率高。
&逻辑与:不管第一个条件是true还是fslse,第二个条件都会判断(会执行),效率低
短路或和逻辑或的区别
||短路或:如果第一个条件为true,那么第二个条件不会判断(不会执行),因为结果都是true,效率高。
|逻辑或:不管第一个条件是true还是fslse,第二个条件都会判断(会执行),效率低
赋值运算符
基本介绍
赋值运算符就是见某个技术出来的值,赋给指定的变量。
赋值运算符的分类
1.基本赋值运算符 = 。
2.符合运算符: += , -= , /= , %= 等。
赋值运算符的特点
//1.从右往左运算。
int c = a+b。
//2.赋值运算符的左边只能是变量,右边可以是变量,表达式,常量值。
int a = 10;
int b = 12 +32;
int c = a;
/*3.复合运算符等价于下面运算
例如:
a += b等价于 a = a+b;
*/
//4.复合赋值运算符会进行类型转换。
三元运算符
语法
条件表达式?表达式1:表达式2。
运算规则
- 如果条件表达式为true,则输出表达式1。
- 如果条件表达式为false,则输出表达式2。
//例如:
int i = 10;
int j = 11;
/*
1.i>j为false
2.返回表达式2 ,j++,++在后,先赋值,在++。
3.返回的结果是11
*/
int result = i>j ? i++ : j++;
System.out.println(result);
System.out.println(result);
System.out.println(result);
使用细节
1.表达式1和表达式2要为可以赋给接受变量的类型(或可以自动转换)。
//例如:
int a = 10;
int b = 20;
int c = a>b ? (int)2.3 : (int)4.5;//可以
double d = a>b ? a : b+1;//可以
运算符的优先级
- 运算符有不同的优先级,优先级就是在计算的时候的运算顺序。
- 只有单目运算符和赋值运算符从右到左运算。
- 如下表是运算优先级表,上一行运算符总优先于下一行。