运算符、三元运算符、位运算符、拓展赋值、运算优先级、自增自减
运算符
- java代码优先级多用括号**,多用括号()**不仅方便而且增加可读性
自增自减
- a++ 是先赋值再增加
- ++a 是先增加再赋值
- 上面都表示 a= a+1;
- 自减同理由
public class Demo05 {
public static void main(String[] args) {
int a=3;
int b=a++;//这一行a++ 是先赋值执行完这行代码以后再增加,所以b值是3
//a++ a=a+1
System.out.println(a);//a=4;
//++a a=a+1
int c=++a;//先增加再把值给c 所以c的值是5
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
扩充类 Math(数学计算公式)
//幂运算 2^3 2*2*2 借助Math 很多运算我们都需要借助工具处理
//特别这里可以按Alt+两次空格快捷返回值
double pow = Math.pow(2, 3);
System.out.println(pow);
位运算符
/*
A = 0011 1100
b = 0000 1101
································
比较每一位的0 1进行判断
A&C =0000 1100
A|B =0011 1101
A^B =0011 0001 //相同为0 不同为1
~B =1111 0010 //取反
//效率极高
<<左移 *2
>>右移 /2
0000 0001 1
0000 0010 2
0000 0100 4
*/
拓展赋值运算符
public class Demo06 {
public static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a=a+b
a-=b;//a=a-b
System.out.println(a);
//字符串连接符 + ,string
System.out.println(""+a+b);// 输出1024
System.out.println(a+b+"");//输出30
}
}
-
小细节:如果字符串在前面会变成 1024
但是如归字符串在后面是 30 -
其实赋值运算符就是偷懒主要是掌握概念
三元运算符
public class Demo07 { public static void main(String[] args) { //x?y:z 如果x==true 则为y 否则为z int score=80; String type = score < 60 ? "不及格" : "及格"; System.out.println(type); } }
- 判断语句
- x?y:z 如果x==true 则为y 否则为z
运算优先级
转载
为了学习完整性转载了这位博主文章
转载自文章 https://blog.csdn.net/huangblog/article/details/8271791
*C语言运算符优先级*
优先级 | 运算符 | 名称或含义 | 使用形式 | 结合方向 | 说明 |
---|---|---|---|---|---|
1 | *[]* | 数组下标 | 数组名[常量表达式] | 左到右 | – |
*()* | 圆括号 | (表达式)/函数名(形参表) | – | ||
*.* | 成员选择(对象) | 对象.成员名 | – | ||
*->* | 成员选择(指针) | 对象指针->成员名 | – | ||
2 | *-* | 负号运算符 | -表达式 | *右到左* | 单目运算符 |
*~* | 按位取反运算符 | ~表达式 | |||
*++* | 自增运算符 | ++变量名/变量名++ | |||
*–* | 自减运算符 | –变量名/变量名– | |||
*** | 取值运算符 | *指针变量 | |||
*&* | 取地址运算符 | &变量名 | |||
*!* | 逻辑非运算符 | !表达式 | |||
*(**类型**)*** | 强制类型转换 | (数据类型)表达式 | – | ||
*sizeof* | 长度运算符 | sizeof(表达式) | – | ||
3 | */* | 除 | 表达式/表达式 | 左到右 | 双目运算符 |
*** | 乘 | 表达式*表达式 | |||
*%* | 余数(取模) | 整型表达式%整型表达式 | |||
4 | *+* | 加 | 表达式+表达式 | 左到右 | 双目运算符 |
*-* | 减 | 表达式-表达式 | |||
5 | *<<* | 左移 | 变量<<表达式 | 左到右 | 双目运算符 |
*>>* | 右移 | 变量>>表达式 | |||
6 | *>* | 大于 | 表达式>表达式 | 左到右 | 双目运算符 |
*>=* | 大于等于 | 表达式>=表达式 | |||
*<* | 小于 | 表达式<表达式 | |||
*<=* | 小于等于 | 表达式<=表达式 | |||
7 | *==* | 等于 | 表达式==表达式 | 左到右 | 双目运算符 |
*!**=*** | 不等于 | 表达式!= 表达式 | |||
8 | *&* | 按位与 | 表达式&表达式 | 左到右 | 双目运算符 |
9 | *^* | 按位异或 | 表达式^表达式 | 左到右 | 双目运算符 |
10 | *|* | 按位或 | 表达式|表达式 | 左到右 | 双目运算符 |
11 | *&&* | 逻辑与 | 表达式&&表达式 | 左到右 | 双目运算符 |
12 | *||* | 逻辑或 | 表达式||表达式 | 左到右 | 双目运算符 |
13 | *?😗 | 条件运算符 | 表达式1?表达式2: 表达式3 | *右到左* | 三目运算符 |
14 | *=* | 赋值运算符 | 变量=表达式 | *右到左* | – |
*/=* | 除后赋值 | 变量/=表达式 | – | ||
*=** | 乘后赋值 | 变量*=表达式 | – | ||
*%=* | 取模后赋值 | 变量%=表达式 | – | ||
*+=* | 加后赋值 | 变量+=表达式 | – | ||
*-=* | 减后赋值 | 变量-=表达式 | – | ||
*<<=* | 左移后赋值 | 变量<<=表达式 | – | ||
*>>=* | 右移后赋值 | 变量>>=表达式 | – | ||
*&=* | 按位与后赋值 | 变量&=表达式 | – | ||
*^=* | 按位异或后赋值 | 变量^=表达式 | – | ||
*|=* | 按位或后赋值 | 变量|=表达式 | – | ||
15 | *,* | 逗号运算符 | 表达式,表达式,… | 左到右 | – |
*说明:*
*同一优先级的运算符,运算次序由结合方向所决定。*
*简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符*