java 语言支持如下运算符,优先级()
- 算术运算符:+,-,*,/,%(取余),--,++
- 赋值运算符:=
- 关系运算符:<,>,>=,<=,==,!=, instanceof
- 逻辑运算符:&&(与),||(或),!(非,取反)
- 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
- 条件运算符 ? : (三目运算符)
- 拓展赋值运算符:+=,-=,*=,/=
/*==========算术运算符=============*/
int a = 10;
int b = 20;
int c = 25;
a+b
a-b
a*b
a/(double)b //0.5
c%a //25/10 = 2.....5 取余====》5
long a1 = 1231544456L
int a2 = 123;
short a3 = 10;
byte a4 = 8;
a1+a2+a3+a4 //long
a2+a3+a4 // int
a3+a4 // int(有long为long,没long为int)
/*==================== !!! 重点 ============**/
/* ======= ++ -- 自增,自减,一元运算符======*/
int a = 3;
int b = a++;// 执行完代码后,先给b赋值,再进行自增
System.out.println(a) // 4 a++ ===> a = a+1
int c = ++a;// 执行完代码前,先进行自增,再给b赋值
System.out.println(a) // 5
System.out.println(b) // 3
System.out.println(c) // 5
/* ======= 幂运算======*/
// java 不存在2^3=8,除了2*2*2,很多运算需要借助Math工具类
double pow = Math.pow(2,3) // 8.0
/*==========逻辑运算符=============*/
// 与 或 非
boolean a = true;
boolean b = false;
a && b //false 逻辑与,两个变量都为真,结果才为真
a || b //true 逻辑或,两个变量存在一个为真,结果才为真
// 短路运算
int c = 5;
(c<4) && (c++<4) // false
System.out.println(c) // c=5,不执行c++
!(a && b) //true 如果是真则变为假,如果为假则为真
/*==========位运算符=============*/
/*
与二进制打交道
A = 0011 1100
B = 0000 1101
A和B进行位数比较
-----------------------------
A&B //与,两个都为1才为1 0000 1100
A|B //或,两个有一个1为1 0011 1101
~B //取反,1111 0010
A^B //异或,如果相同为0,否则为1 0011 0001
面试
效率高
>> 右移 ,/2
<< 左移,*2
2*8 = 16 怎么运算最快2*2*2*2
2<<3 向左位移3次,2*2*2 ====》 16
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 1000 8
0001 0000 16
*/
/*==================== !!! 重点 ============**/
/*==========条件运算符,三元运算符=============*/
int a = 10;
int b = 20;
int c = a>b? a:b //20 ,判断a>b是否为true,为true选择a,为false选择b
/*==========拓展赋值运算符=============*/
int a = 10;
int b = 20;
a+=b; // a = a+b
a-=b; // a= a-b
/*==============字符串连接符===========*/
int a = 10;
int b = 20;
System.out.println(""+a+b) //1020,字符串在前面不相加
System.out.println(a+b+"") //30,字符串在后面相加
狂神study