常见的运算符
|-- 算术运算符
|-- 比较(关系)运算符
|-- 逻辑运算符
|-- 自加和自减运算符
|-- 赋值运算符
|-- 三目运算符
|-- 位运算符
算术运算符: + - * / %
补充:常(恒)量 在程序运行时,不能修改它的值的量
在java中,声明常量使用的关键字
比较(关系)运算符: > < >= <= != ==
结果是什么类型:boolean
逻辑运算符: 连接多个条件的关联关系的
与 && & // 表示的是并且关系,全部为真则为真,否则为假
或 || | // 表示或者的关系,只要一者为真则为真,全部为假才为假
非 ! // 否定,取反
&& || 短路与 短路或
效果更高,在编程建议使用短路与和短路或
自加和自减运算符: ++a a++ –a a–
前加加和后加加的优先级别不同引起的!!!!!
前加加的优先级别非常高,仅次于括号
后加加的优先级别非常非常低,甚至比赋值符都低
赋值运算符: = // 将等号右侧的值赋给左侧的变量 += // a += 10 <===> a = a + 10 -= *= /= %=
三目运算符: 表达式 ? 值1: 值2 int a = 10; int b = 20; int c = a > b ? 100 : 200;
位运算符: 计算机底层本质是二进制(半导体)运算
计算机底层使用的二进制运算
进制:
人类最长的使用的10进制
10个个位数:
0 1 2 3 4 5 6 7 8 9 逢10进1
二进制:
个位数只有2个:
0 1
八进制: 0561
十六进制:0~9 ABCDEF 0xAF89AD
正数的源码、反码、补码一致,也就是正数没有源码、反码、补码之说
源码:数值的二进制状态码
反码:符号位不变,其余各位取反,得到的就是反码
补码:反码+1,就是补码
计算机底层本质上来说,是以补码运行的!!!!
& // 与运算
| // 或运算符
^ // 异或运算
~ // 按位取反
// 下面三个叫做移位运算
<< 左移运算符
>> 有符号右移运算
>>> 无符号右移运算
int a = 100;
a << 2
int a = 10;
int b = 11;
a & b; // 都为真,则为真
a | b; // 一者为真,则为真
a ^ b; // 相反为真
0000 1010
0000 1011 &
---------------
0000 1010 10
0000 1010
0000 1011 |
-----------
0000 1011 11
0000 1010
0000 1011 ^
---------
0000 0001 1
基于正数的二进制运算 5
一个字节
byte a = 5
byte b = 10
0000 0101 0000 1010 a + b
0000 0101 0000 1010
0000 1111 15
无符号的时候: 1111 1111 255 最大值 0000 0000 0 最小值 0~255 256个值
引入负数 符号位的概念 最高位来表示数值的正负:0表示正数;1则表示该数是个负数
byte c = -1
byte d = 2
1000 0001 0000 0010
1000 0011 -3
正数的源码、反码、补码一致,也就是正数没有源码、反码、补码之说
源码:数值的二进制状态码 反码:符号位不变,其余各位取反,得到的就是反码 补码:反码+1,就是补码
计算机底层本质上来说,是以补码运行的!!!!
0000 0010 2
1000 0001 源码 1111 1110 反码 1111 1111 补码
0000 0010 1111 1111
1000000001
000000001
-3 + 1 = -2
0000 0001 1111 1101
1111 1110 1
1111 1101 1000 0010 -2
有符号的时候
0111 1111 +127 1000 0000 -128
-128~127 256个值
|