1、定义:用来指明操作数的的运算方式
2、分类:有两种分类方式,按照操作数数目可分为单目、双目和三目;我们这里用第二种分类方式来总结即按功能划分。
a.算术运算符 如:+ -*/%...
b.赋值运算符 如:= += /=
c.关系运算符(比较) 如:> < ...
d.逻辑运算符 如:& && ..
e.位运算符 如
我准备通过代码和注释来简单的整理一下了:
//算术运算符 只举下除和取模 、自增的例子了
//除法得出的数的类型是根据变量类型决定的
int a = 5;
int b = a / 2;
System.out.println(b);
float f = 5f;
float f1 = f / 2;
System.out.println(f1);
// 取模的符号类型是有被除数的符号决定
int a1 = 5;
int b1 = a1 % -2;
System.out.println(b1);
int a2 = -5;
int b2 = a2 % 2;
System.out.println(b2);
//如果++在后面则先备份后自增,反之则先自增后备份,赋值是将备份的值赋值给=前面的变量。所以我们下面的值是1,在面试中经常会遇到
int m = 1;
m = m++;
System.out.println("m=" + m);
// 看懂上面就很容易理解,这个可能在面试中遇到 l永远等于1
int l = 1;
for (int i = 0; i < 100; i++) {
l = l++;
}
System.out.println("l=" + l);
//赋值运算符
int m=1; //赋值运算
m+=10;//相当于m=m+10;
short n=1; //常量池中的int 类型赋值给short 赋值时会帮我们自动转换
n=n+=1; // 需要注意点:自动帮我们转化 因为short加上int 类型得到int 类型,+=这个赋值
//号会帮我自动转换成short类型
n=(short) (n+1); //需要强转因为short加上int类型会将short前面的位自动补齐,得到int类型
//关系运算 >= <= > < != == 没什么可整理的,简单的说说== 比较基本数据类型比较的是值 比较运算符比较的结果是true或false
//逻辑运算符(条件判定的) &(逻辑与 ) |(逻辑或) ^ (逻辑异或) !(逻辑非) && (短路与) ||(短路或)
// &和 && 区别 &&如果前面是false 后面就不在运行 &则会运行 |和||也是同样的,面试中可能会遇到
//所以&& 和 || 在特定的情况下提高点效率,&&在前面是false时,||在前面是true时
//^逻辑异或 表示前后表达式不一致则为true
//位运算 &(按位与) |(按位或) ^ (按位异或) ~(按位取反) << (按位左位移) >> (按位右位移) >>> (按位右位移无符号)
//用来计算二进制的 把十进制转成二进制在进行按位与或非运算 在转成十进制
//补充知识点:1.十进制转二进制是除2除到0为止取余数 将余数倒序排序,位数不够前面加0
// 2.二进制从右到左,每个元素乘以2的位(从0开始)次幂 相加在一起 注意最高位为符号位
//这里的计算都是计算的补码 在计算机基础里面 有过这些知识,这里简单的说下:
//1.原码:也就是一个数二进制,最高位为符号位 。2.反码:正数的反码为原码,负数的反码符号位不变其余取反 3.补码:正数的补码为原码,负数的反码的补码为反码加1
//<<左位移 指二进制位整体左移 也就是扩大2的位移次幂倍; >>右位移 指二进制位整体左移 也就是除2的位移次幂倍(保留符号位); >>>无符号右位移 指二进制位整体左移 也就是除2的位移次幂倍(不保留保留符号位,符号位补0);