算数运算符
自加和自减运算符
比较(关系)运算符
逻辑运算符
赋值运算符
三目运算符
位运算符
java的算数运算符分为一元运算符和二元运算符。一元运算符只有一个操作数;二元运算符有两个操作数,运算符位于两个操作数之间。算数运算符的操作数必须是数值类型。
算数运算符包括
1. 普通运算
二元运算符
名字 示例 结果 + 加 1+1 2 - 减 4-1 3 * 乘 4*5 20 / 除 8/2 4 % 取余 9/2 1
运算规则:
二元运算符的运算规则:
二元运算符的运算规则
整数运算
1. 如果两个操作数有一个为Long, 则结果也为long。
2. 没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算:
3. 如果两个操作数有一个为double,则结果为doubl 4. 只有两个操作数都是float,则结果才为float。
取模运算: 其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同。
public class Testopc { public static void main (String[] args){ int a = 10 ; int b = 3 ; int c = 10 ; System.out.println(a+b); //加法运算 System.out.println(a-b); //减法运算 System.out.println(a*b); //乘法运算 System.out.println(a/b); //除法运算(注意定义的数值类型会影响除法的影响) System.out.println(a%c); //取余运算 } }
操作符 名称 说明 示例 ++var 前置自增操作符 变量var+1并使用变量增加后的值 int j= ++i; var++ 后置自增操作符 变量var+1并使用原来的值 int j= i++; --var 前置自减操作符 变量var-1并使用变量减少后的值 int j= --i; var-- 后置自减操作符 变量var-1并使用原来的值 int j= i--;
public class Testopc { public static void main (String[] args){ int a = 10 ; int b; b=a++; System.out.println("a="+a+" b="+b);
Java 操作符 数学符号 名称 示例(a=1) 结果 < < 小于 a<0 false <= ≤ 小于等于 a<= false > > 大于 a>0 true >= ≥ 大于等于 a>=0 true == = 等于 a==0 false != ≠ 不等于 a!=0 true
public class Testopc { public static void main (String[] args){ int a = 10 ; int b = 3 ; int c = 10 ; 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(a!=c); System.out.println(a==b); System.out.println(a==c); } }
注意事项:
- == 、 != 两边的操作数既可以是数值类型,也可以是引用类型
- ==是赋值运算符,而真正的判断两个操作数是否相等的运算符是==
- 只支持左右两边操作数是数值类型:> 、 < 、 >= 、 <
操作符 | 名称 | 说明 |
! | 非 | 逻辑非 |
&& | 与 | 逻辑与 |
|| | 或 | 逻辑或 |
^ | 异或 | 逻辑异或 |
并且(逻辑:与)&& //并且表示两者都成立
或者(逻辑:或)|| //或者表示只要两个其中的一个条件成立
相反(逻辑:非)!//如果以前成立,就不成立,如果以前不成立,相反就成立
双与 比 单于 的效率稍微高点
双:得到结果 就直接输出 不需要看 后面的条件
单:全部判断完毕后 才能输出
& 按位与运算 ,运算原则:相同二进制数位上数值为1,结果为1,否则结果为0;
| 按位或运算,运算原则:相同二进制数位上数值为0,结果为0,否则结果为1;
^ 按位异或,运算原则:参与运算的两个数相应位相同则结果为0,异号则为1;
~ 按位取反,运算原则:二进制数位上0变1,1变0;
左移操作“>”:将运算数的二进制码整体右移指定位数,右移之后的空使用“符号位”来补充。移出 去的二进制数忽略不计。若是正数使用“0”补充;若是负数使用“1”补充;
public class Testy { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 与的结果是:"+(a&b)); } }
在数值型的位移运算中,是转换为2进制进行运算
运行结果 a 和b与的结果是:128
“a”的值是129,转换成二进制就是10000001。而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。
public class Testlogic { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 或的结果是:"+(a|b)); } }
运行结果 a 和b或 的结果是:129
“a”的值是129,转换成二进制就是10000001。而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,有1,就出1,可以知道结果就是10000000,即129。
public class Testlogic { public static void main(String[] args) { int a=129; int b=128; System.out.println("b非的结果是:"+(~b)); } }
运行结果 b非的结果是:-129
操作符 名称 示例 等价于 += 加法赋值操作符 i+= 7 i = i+7 -= 减法赋值操作符 i-= 7 i = i-7 *= 乘法赋值操作符 i*= 7 i = i*7 /= 除法赋值操作符 i/= 7 i = i/7 %= 求余赋值操作符 i%= 7 i = i%7
对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e将按a ? b : (c ? d : e)执行。
public class Testlogic { public static void main(String[] args) { int a=129; int b=128; System.out.println(a>b?a:b); } }
运行结果 129
因为a >b 成立 所以输出a;