运算符
Java语言支持如下运算符:
- 算术运算符:+,-,*,/,%(取余数)【模运算】,++,- -
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
- 条件运算符: ? :(偷懒的)
- 扩展赋值运算符:+=,-=,*=,/=(也偷懒)
package operator;
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;//Ctrl+D:复制当前行到下一行
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/b);//`0.5 会舍去
System.out.println(a/(double)b);
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 556623222514L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//556623222655 long
System.out.println(b+c+d);//141 int无 long默认为int型
System.out.println(c+d);//18 int
//System.out.println((String)(c+d));报错
}
}
package operator;
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值表示
int a = 10;
int b = 20;
int c = 21;
System.out.println(c%a);// c/a 21/10 = 2.....1
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
自增自减运算符,初识Math类
package operator;
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增
//a++ a = a+1
System.out.println(a);
//a++ a = a+1
int c = ++a;//执行完这行代码前,先自增,再给c赋值
System.out.println(a);
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(c);
//幂运算 2^3 2*2*2 = 8 很多运算,使用工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
逻辑运算符
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);
System.out.println(c);
}
}
位运算符
package operator;
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
---------------------------------------
A&B = 0000 1100 A与B 全1为1
A|B = 0011 1101 A或B 有1为1
A^B = 0011 0001 异或 相同为0,相异为0
~B = 1111 0010 取反 字面意思
2*8 = 16怎么算最快
效率高!!!
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);//16
}
}