算术运算符
++y(y):先将 y 的值自增(自减)1,然后再在当前表达式中使用 y 的值。
y++(y):先在当前表达式中使用 y 的值,然后再将 y 的值自增(自减)1。
int a = 25;
int b = 4;
int c = a+b; //加
System.out.println("a+b="+ c);
int d = a-b; //减
System.out.println("a-b="+d);
int e = a*b; //乘
System.out.println("a*b=" + e);
结果为:
a+b=29
a-b=21
a*b=100
关系运算符
equals 用于判断引用类型的值
== 在基本数据类型的时候就是比较值是否相同,在引用类型时是比较地址
String a="abc";
String b="abc";
System.out.println(a==b);
- a==b和a.equals(b);结果都会为true,因为没有用new去新建对象,其实a和b都指向的是同一个String对象"abc",改成:
String a=new String("abc");
String b=new String"abc");
System.out.println(a==b);
逻辑运算符
int intB = 10; //短路与
if(intB <11 && intB++ <9){}
System.out.println("intB="+ intB);
int intk = 10; //不短路与
if(intk <11 & intk++ >9){}
System.out.println("intk="+ intk);
int intp = 10; //短路或 ||
if (intp >11 || intp++<9) {}
System.out.println("intp="+intp);
int into = 10; //不短路或 |
if (into <11 | into++<9) {}
System.out.println("into="+into);
if(false ^ true){ //异或 ^
System.out.println("a");
}
if (!(1 > 2)) {// ! 非
System.out.println("!(1>2)");
}
————————————————
结果为:
intB=11
intk=11
intp=11
into=11
a
!(1>2)
赋值运算符
int intZ=11;
System.out.println(intZ*=2); //相乘
int intQ=11;
System.out.println(intQ/=2); //相除 取整
int intq=11;
System.out.println(intq+=2); //相加
int inta=11;
System.out.println(inta-=2); //相减
结果为:
22
5
13
9
三元运算符
Java 提供了一个特别的三元运算符(也叫三目运算符)经常用于取代某个类型的 if-else 语句。条件运算符的符号表示为“?:”,使用该运算符时需要有三个操作数,因此称其为三目运算符。使用条件运算符的一般语法结构为:
result = a>b ? a : b;
其中,a>b 是一个布尔表达式。当 a>b 为真时,执行 a, 否则就执行 b。此三元运算符要求返回一个结果,因此要实现简单的二分支程序,即可使用该条件运算符。
位运算符
1.& 按位与
2.| 按位或
3.^ 按位异或
4.~ 取反
5.>> 右移
6.<< 左移
1 、& 运算符
&是二元运算符,它以特定的方式组合操作数中对应的位 如果对应的位都为1,那么结果就是1, 如果任意一个位是0 则结果就是0
1 & 3的结果为1
来看看它的怎么运行的:
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1 根据 & 的规则 得到的结果为 0 0 0 0
0 0 0 1,十进制表示就是1
只要任何一位是0 &运算的结果就是 0,所以可以用&把某个变量不必要的位设为0, 比如某个变量的二进制表示为 0 1 0 0 1 0 0 1, 我想保留低4位,消除高4位 用 & 0x0F就可以了(注:0x0F为16进制表示法,对应的二进制为 0 0 0 0 1 1 1 1),这个特性在编码中使用很广泛。
2 、| 运算符
| 跟 & 的区别在于 如果对应的位中任一个操作数为1 那么结果就是1
1 | 3 的结果为3
3、 ^ 运算符
^运算符跟 | 类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0
0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 = 0 0 0 1 1 0 1 1
4 、~ 运算符
~是对位求反 1变0, 0变1
5 、移位运算符
移位运算符把位按指定的值向左或向右移动
- << 向左移动 而 >> 向右移动, 超过的位将丢失,而空出的位则补0
如 0 1 0 0 0 0 1 1(十进制67) 向左移动两位67<<2将变成
0 0 0 0 1 1 0 0
向右移动两位67>>2则是 0 0 0 1 0 0 0
前面提到2向前移动1位变成4 利用这个特性可以做乘法运算(在不考虑溢出和符号位的情况下)
2 << 1 =4
3 << 1 = 6
4 << 1 = 8
同理 >> 则可以做除法运算