运算符
-
算数运算符 +、-、*、/、%(取余(模))、++、--、
-
赋值运算符 = (A=10)把10赋值给10
-
关系运算符 >, <, >= ,<=, ==(java中的等于是用双等于), !=instanceof !=(不等于)
-
逻辑运算符 &&(与),||(或),!(非)
-
位运算符 &,|, ^, ~, >>, <<, >>> (了解!!!)
-
条件运算符 ?:
-
扩展赋值运算符 +=,-=,*=,/=
优先级用()作为隔离
+-*/运算符
package operator; public class Demo01 { public static void main(String[] args) { //二元运算符 int a = 10; int b = 20; int c = 25; int d = 25; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/(double)b); //要把int转成double 否则int自动舍去小数 } }
参数运算结果转换
package operator; public class Demo02 { public static void main(String[] args) { long a = 123123123; int b = 123; short c= 10; byte d = 8; System.out.println(a+b+c+d); //long System.out.println(b+c+d);//int System.out.println(c+d);//int //运算中多个参数中,有一个参数为long ,那么结果也为long,如果没有long时 ,结果也为int类型 } }
关系运算符
package operator; public class Demo03 { public static void main(String[] args) { int a =10; int b =20; int c =21; System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); System.out.println(c%a);//c除以a 21除以10 =2 余1 //取余 也就是模运算 } //关系运算符返回的结果 :正确 ,错误 ,布尔值
}
## 自增自减
```java
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ 自增 --自减 一元运算符
int a = 3;
System.out.println(a);
int b = a++;//执行完这行代码后,先给b赋值,赋完之后在自增
// a++ a=a+1
System.out.println(a);
int c = ++a;//执行完这行代码前,先自增,再给b赋值
// ++a
System.out.println(c);
//幂运算 2^3 2*2*2 =8 很多运算 ,我们会使用一些工具类来操作
double pow = Math.pow(2, 3);
System.out.println(pow);
double pow1 = Math.pow(3, 9);
System.out.println(pow1);
}
}
逻辑运算与短路运算
package operator;
//逻辑运算符
public class Demo05 {
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b));//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a || b));//逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println("!(a && b):"+!(a && b));//如果是真,则变为假,如果是假则变为真
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //短路运算,C<4只会计算到这里,前面如果为假,则后面的C自增则不会计算所以最后C的结果还是5
System.out.println(c);
}
}
位运算符
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A= 0011 1100
B= 0000 1101
---------------------------------------------------------------
A&B =0011 1100 A或B 00相同则取0 10 则取1 11取1 或
A|B =0011 1101 A与B 00取0 10取1 11取1 01取1 与
A^B =0011 0001 A亦或B 00取0 10取1 11取0 01取1 亦或
~B =1111 0010 非B 取反即可 1取0 0取1 非
-----------------------------------------------------------------
拓展题目
2*8如何运算最快
不是直接2*8 而是 2*2*2*2 这样会直接使用位运算,更加快速,效率极高。
-----------------------------------------------------------------
<<左移 >>右移 左移相当于把数字乘以2 右移相当于数值除以2
二进制 十进制
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
......
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
拓展赋值运算符
package operator;
public class Dome07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b
System.out.println(a);
a-=b; //a = a-b
System.out.println(a);
//字符串连接符 +
// 在+号运算符两侧如果有String(字符串类型)则会把其他操作数都转换成String再进行 连接
System.out.println(""+a+b);
System.out.println(a+b+"");//与上面的区别 ,如歌+号在字符串后面则会进行运算
}
}
条件运算符
package operator;
public class Demo {
public static void main(String[] args) {
// X ? Y:Z
//如果X == true 则结果为Y 否则结果为Z
int score = 80;
String type = score < 60 ?"不及":"及格";
System.out.println(type);
//必须掌握
}
}