运算符
Java语言支持如下运算符
- 算数运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>,<, >,<,!=instanceof(不等于)
- 逻辑运算符:&&,||,!
- 位运算符:&,|,~,>>,<<,>>>,(了解!!!)
- 条件运算符:?,:
- 扩展赋值运算符:+=,-=,*=,/=
算数运算符
public class days06 {
public static void main(String[] args) {
//二元运算符
int a=10;
int b=20;
int c=30;
int d=40;
int f=21;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
System.out.println(c%a);//c/a 21/10=2...1
//取余,模运算
}
}
//输出结果
30
-10
200
0.5
1
扩展:
long a=123123123123123123L;
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
//扩展 2^3 2*2*2 =8
double pow =Math.pow(3,2);
System.out.println(pow);
输出结果:
123123123123123264
141
18
9.0
++ (自增) --(自减) 一元运算符
int a =3;
int b =a++; //a++ a=a+1 执行完这行代码后,先给b赋值,在自增
int c =++a; // 执行完这行代码前,先给b赋值,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
输出结果:
5
3
5
int类型不能转换为string(cast:转换)
关系运算符
//关系运算符返回的结果只有:正确 错误 布尔值
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);//!= :不等于
输出结果:
false
true
false
true
逻辑运算符
//逻辑运算符 与 (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));//如果是真,则变为假,如果是假则为真
输出结果:
a && b:false
a || b:true
!(a && b):true
扩展:
//短路运算
int c =5;
boolean d =(c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);
输出结果:
false
5
位运算
/*位运算
A=0011 1100
B=0000 1101
--------------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
<< *2 左移乘2
>> /2 右移除2
*/
扩展面试题:
2*8怎么更快算出来?
2*8=16 2 * 2 * 2 *2(基本方法)
System.out.println(2<<3);
输出结果:
16
条件运算符
int a =10;
int b =20;
a+=b;
a-=b;
System.out.println(a);
//字符串连接符 + , string
System.out.println(""+a+b);
System.out.println(a+b+"");
//面试题:这俩代码有什么不同
//如果字符串在前面 后面会进行拼接
//如果在后面 前面依旧进行运算 (细节问题)
输出结果:
10
1020
30
三元运算符
//三元运算符
// x ? y :z
//如果x==true,则结果为y,否则为z
int score =80;
String type = score <60 ?"不及格":"及格";
//if
System.out.println(type);
//让代码更精简
输出结果:
及格
三元运算符
//三元运算符
// x ? y :z
//如果x==true,则结果为y,否则为z
int score =80;
String type = score <60 ?"不及格":"及格";
//if
System.out.println(type);
//让代码更精简
输出结果:
及格