+,-,*,/,%(模-取余),++,–
一元运算符:++ 自增,-- 自减
b=a++;表示的是:先给b赋值,然后再自增
b=++a;表示的是:先自增,然后再给b赋值
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a =3;
int b = a++; //执行完这行代码之后,先给b赋值,再自增
//a = a + 1;
System.out.println(a); //此时a的值是4
System.out.println(b);
System.out.println("=============");
//a = a + 1;
int c = ++a; //执行完这行代码之前,先自增,再给c赋值
System.out.println(a); //此时a的值是5
System.out.println(c);
System.out.println("=============");
//幂运算 2^3 2*2*2 = 8
//借助于一些工具类 Math
double pow = Math.pow(2,3);
System.out.println(pow);
}
二元运算符:
+,-,*,/,%
+,-,*,/ 运算;
特别注意:进行 / 的时候,有小数时,可以先强转一个数的类型在计算,不然算不出来正确结果
public static void main(String[] args) {
//二元运算符
//Ctrl + D :复制当前行到下一行
int a = 0;
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,输出的却是0;因为向下取整取了0
System.out.println(a/(double)b);
//有小数的时候,要注意,可以强转一个数的类型
}
如果几个数中有Long型,那么最终结果是Long型;
如果几个数中有double型,那么最终结果是double型;
public static void main(String[] args) {
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
double e = 5.6;
//如果几个数有Long,那么最终结果是Long型
//如果几个数有double,那么最终结果是double型
System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //Int
System.out.println(c+d); //Int
System.out.println(b+e); //Double
System.out.println(a+e); //Double
}
% 模运算
public static void main(String[] args) {
//关系运算符的返回结果: 正确,错误 布尔值
int a = 10;
int c = 21;
System.out.println(c%a); // c % a 21/10=2...1
}
赋值运算符:
= (把后面的值赋值给前面那个值)
关系运算符:<,>,>=,<=,==(等于),!=(不等于),instanceof
public static void main(String[] args) {
//关系运算符的返回结果: 正确,错误 布尔值
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a
逻辑运算符:
&&(与),||(或),!(非)
逻辑与运算:两个变量都为真,结果才为true;
逻辑或运算:两个变量有一个为真,结果才为true;
逻辑非运算:如果是真,则变为假;如果是假,就变为真。
短路运算:如果&&前面的结果是false,那么不会进行下一步的计算
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));
//非运算:如果是真,则变为假;如果是假,就变为真
System.out.println("====================");
//短路运算
//如果&&前面的结果是false,那么不会进行下一步的计算
int c = 5;
boolean d1 = (c<4)&&(c++<4); //c<4 false,那么c++就不执行了
System.out.println(d1);
System.out.println(c);
System.out.println("====================");
boolean d2= (c>4)&&(c++<4); //c>4 true,执行c++,c++<4为假,结果为false
System.out.println(d2);
System.out.println(c);
}
位运算符:
&,|,^,~,>>(右移),<<(左移),>>>(了解!!!)
面试题:2 * 8怎么算最快?
2 * 8 = 16 将8拆分成2: 2 * 2 * 2 * 2
位运算效率极高!!!
位运算是直接跟底层(2进制)打交道的
<< 左移 相当于 * 2
>> 右移 相当于 / 2
public static void main(String[] args) {
System.out.println(2<<3); //表示的是2^3 结果为8
System.out.println(16>>2); //表示的是3^2 结果为4
}
条件运算符:
?,:
例如:x ? y : z
如果x==true,则结果为y,否则结果为z。
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score >60 ?"及格":"不及格"; //必须掌握
//后面经常使用的是 if() 判断
System.out.println(type);
}
扩展赋值运算符:
+=,-=,*=,/= 它们又被称为 偷懒运算符 。
重点关注的地方是,字符串连接符。
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); //""在前面,后面的会拼接
System.out.println(a+b+""); //""在后面,前面的会计算
}
优先级
| 优先级 | 运算符 | 类型 | 使用形式 | 结核性 |
|---|---|---|---|---|
| 1 | ( ) | 括号运算符 | (表达式)/函数名(形参表) | 由左向右 |
| [ ] | 数组下标 | 数组名[常量表达式] | 由左向右 | |
| . | 成员选择(对象) | 对象.成员名 | 由左向右 | |
| -> | 成员选择(指针) | 对象指针->成员名 | 由左向右 | |
| 2 | !、+(正号)、-(负号) | 一元运算符 | 符号 表达式 | 由左向右 |
| ~ | 按位取反运算符 | ~ 表达式 | 由右向左 | |
| ++、– | 递增与递减运算符 | ++a或者a++ | 由右向左 | |
| (类型) | 强制类型转换 | (数据类型)表达式 | 由右向左 | |
| sizeof | 长度运算符 | sizeof(表达式) | 由右向左 | |
| 3 | *、/、% | 算术运算符 | a * b | 由左向右 |
| 4 | +、- | 算术运算符 | a + b | 由左向右 |
| 5 | <<、>> | 位左移、右移运算符 | 变量<<表达式 | 由左向右 |
| 6 | >、>=、<、<= | 关系运算符 | 表达式<=表达式 | 由左向右 |
| 7 | ==、!= | 关系运算符 | 表达式==表达式 | 由左向右 |
| 8 | & | 位运算符、逻辑运算符 | 表达式&表达式 | 由左向右 |
| 9 | ^ | 位运算符、逻辑运算符 | 表达式^表达式 | 由左向右 |
| 10 | 位运算符、逻辑运算符 | 表达式|表达式 | ||
| 11 | && | 逻辑运算符 | 表达式&&表达式 | 由左向右 |
| 12 | | | 逻辑运算符 | 表达式| | |
| 13 | ? : | 条件运算符 | x ? y : z | 由右向左 |
| 14 | =、+=、-=、/=、*= | 赋值运算符、扩展运算符 | 变量 符号 表达式 | 由右向左 |
| 15 | , | 逗号运算符 | 表达式,表达式 | 由左向右 |
逻辑非 ! > 逻辑与 && > 逻辑或 ||
a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c。
1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。
有不懂的地方可以看一下up主的视频,讲的很细!
链接:狂神说Java–bilibili



