数学运算符
数学运算,结果为一个数值。见下表:运算符 | 说明 | 举例 |
---|---|---|
+ | 加法 | 1 + 2 |
- | 减法 | 4 - 3.4 |
* | 乘法 | 7 * 1.5 |
/ | 除法 | 3.5 / 7 |
% | 取余 | 7 % 2 |
++ | 自增 | 3++ |
-- | 自减 | 3-- |
关系运算符
关系运算符,结果为一个布尔值。见下表:运算符 | 说明 | 举例 |
---|---|---|
> | 大于 | a > 4.2 |
>= | 大于等于 | 3.4 >= b |
< | 小于 | 1.5 < 9 |
<= | 小于等于 | 6 <= 1 |
== | 等于 | 2 == 2 |
!= | 不等于 | 2 != 2 |
&& | 与 | true && false |
|| | 或 | (3 > 1) || (2 == 1) |
! | 非 | !true |
位运算符
位运算符对整数的二进制形式逐位进行逻辑运算,得到一个整数。见下表:
运算符 | 说明 | 举例 |
---|---|---|
& | 与 | 1 & 4 |
| | 或 | 2 | 5 |
^ | 异或 | 2 ^ 3 |
~ | 非 | ~5 |
<< | 左移 | 5 << 3 |
>> | 右移 | 6 >> 1 |
除法运算符 “/”。
二元运算符,具有左结合性。
参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。
例如:5/2=2,1/2=0
5/2.0=2.5
求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。求余运算的结果等于两个数相除后的余数。
例如:
5%2=1,1%2=1
5%2.0和5.0%2的结果是语法错误
当前面的数小于后面的数时,其实求余运算可以看成 a%b=a-(int)(a/b)*b
1%2=1
2%5=2
a % b 如果a<b的话,这样的商为0,余数就是a 哈,这个关系表达式a%b=a-(int)(a/b)*b 又是这么解释的
先运算(a/b)然后a-(a/b的值)然后乘以b 例1. 100除以2=50 结果为整数 则取值为0 (原因就是100除以2的值是整数,不是50.…………几)
例2. 9除以2=4.5 则还是用4乘以2=8 再用9-8 结果就是余数
转:在C语言中,-3/16,16/-3,-3%16,16%-3的值各为多少?
除号的正负取舍和一般的算数一样,符号相同为正,相异为负
求余符号的正负取舍和被除数符号相同
-3/16=0 16/-3=-5 -3%16=-3 16%-3=1
5%-2=5-(5/-2)*(-2)=5-(-2.5)*(-2)=5-5=0
进制方法
根据数的多少位来进行运算
0 1 1 0 0 0 0 1 =97
128 64 32 16 8 4 2 1
64+32+1=97
用2进制中的所有1下的数值相加
[++ --]
如果有表达式 a = i++ 它等价于 a = i ; i = i + 1;
如果有表达式 a = ++i 它等价于 i = i + 1; a = i;
1 首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值
2 ++i和i++都是分两步完成的。因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值(可被寻址的值);i++ 的后面一步是自增,不是左值。(2的两步分解与左右值的因果关系只是我的直觉,对错还待考证)
【与 &】
true & true =true
true & false=false
false &true=false
false&false=false
运算规律:&运算的两边只要有一个false,结果为false,只有两边都为true,结果才是true
&&:
和&运算的结果一样,但是运算过程有点小区别
&:无论左边运算结果是怎么,右边都参与
&&:当左边结果是false,右边不参与运算
【非 !】
判断事物的另一面
!true=false
!false=true
【或 |】
true | true =true
true | false=true
false |true=true
false|false=false
运算规律:|运算的两边只要有一个true,结果为true,只有两边都为false,结果才是false
||:
和 | 运算的结果一样,但是运算过程有点小区别
|:无论左边运算结果是怎么,右边都参与
||:当左边结果是false,右边不参与运算
【异或】
true^ true =false
true ^false=true
false ^true=true
false^false=false
运算规律:^运算的两边只要有一个true,结果为true,只有两边相同,结果才是false
条件运算符
Java中也有一个条件运算符(三目运算符):condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。
下面是关于运算符的一个综合举例:
- public class Demo {
- public static void main(String[] args){
- int a=10;
- int b=10;
-
- int x=10;
- int y=21;
- int z=10;
-
- System.out.println("后自加 a=" + (a++));
- System.out.println("a的值 a=" + a);
- System.out.println("前自加 b=" + (++b));
-
- System.out.println("---------------------");
- System.out.println("说 x>y,对吗?" + (x>y));
- System.out.println("认为 x>y 并且 x<y,对吗?" + ( (x>y) && (x<y) ));
- System.out.println("认为 x>=y 或者 x==y,对吗?" + ( (x>=y) || (x==y) ));
- System.out.println("认为 x<y 或者 x=z,对吗?" + ( (x<y) || (x==z) ));
- System.out.println("---------------------");
- System.out.println("a&x 的结果是:" + (a&x));
- System.out.println("a|x 的结果是:" + (a|x));
- System.out.println("y^z 的结果是:" + (y^z));
-
- System.out.println("---------------------");
- System.out.println("a 左移2位的结果是:" + (a<<2));
- System.out.println("y 右移3位的结果是:" + (y>>3));
- }
- }
后自加 a=10
a的值 a=11
前自加 b=11
---------------------
说 x>y,对吗?false
认为 x>y 并且 x<y,对吗?false
认为 x>=y 或者 x==y,对吗?false
认为 x<y 或者 x=z,对吗?true
---------------------
a&x 的结果是:10
a|x 的结果是:11
y^z 的结果是:31
---------------------
a 左移2位的结果是:44
y 右移3位的结果是:2