Java中的运算符
1、运算符的基本介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
主要有以下几种:
- 算术运算符
- 赋值运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 三元运算符
2、算术运算符
算术运算符是对数值类型的变量进行运算的,主要有
运算符 | 作用 |
+ | 加法运算,可以用于字符串的拼接。 |
- | 减法运算 |
* | 乘法运算。 |
/ | 除法运算,当两个整数相除,有小数时,结果为整数。 |
% | 取余运算 此公式能用于大部分取余 a % b = a - (a / b) * b |
++ | 自增(前) :先运算后取值 自增 (后):先取值后运算 |
- - | 自减(前) :先运算后取值 自减(后):先取值后运算 |
详解 / % ++ - -
// 除法运算
int num1= 8;
int num2 = 3;
System.out.println(num1/num2);// 输出 2
// 取出运算
System.out.println(num1%num2);//输出 2 a % b = a - (a / b) * b 使用手算为 2
// 不使用代码计算 -8 % 3 = ?
// ++ 运算 --运算方式同++运算类似
int num1 = 1;
// ++在前
++num1;
System.out.println(num1);//输出为2
// ++在后
num1++;
System.out.println(num1);//输出为2
// 个人理解为 当 ++此条语句在单独使用时可 理解为 i = i + 1。
//当++单独非语句时使用时
int num1 = 1;
int num2 = 0;
// ++ 在前
num2 = ++num1; // 在非单独使用时 有任意运算符时 均按照 ++在前先自增后赋值 ++在后先赋值后自增
/*
将上述语句拆开
num1 = num1 + 1;
num2 = num1; 个人理解 : 程序在执行时,先执行等号右边 再按照右边 从左往右依次执行
*/
System.out.println(num1);//2
System.out.println(num2);//2
int num1 = 1;
int num2 = 0;
// ++ 在后
num2 = num1++;
/*
将上述语句拆开
num2 = num1;
num1 = num1 + 1;
*/
System.out.println(num1);//2
System.out.println(num2);//1
3、赋值运算符
赋值运算符就是将某个运算后的值,赋给指定的变量。
基本赋值运算符 = int a = 10; 指将某个数据赋值给一个变量
复合赋值运算符 += , -= , *= , /= , %= 用法一致 举例 +=
复合运算符是赋值运算符的简写 如
int a = 1;
a += 5;//等价为a = a + 5; 个人理解为 直接将 a+ 左移到等号右边
System.out.pringln(a); //输出6
4、关系运算符 [比较运算符]
关系运算符用于比较两个数据, 返回的结果只能是 true 或 false
System. out .print1n(3 > 2); //true
System. out.print1n(3 < 2); //false
System. out .print1n(2 == 2); //true
System. out.print1n(2 != 2); //false
System. out .print1n(3 >= 3); //true
System. out .print1n(3 <= 5); //true
5、逻辑运算符
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean
- a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
- a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
- a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
- a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
- !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
- a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
详解&&与&: && 和 & 他们的结果相同,不过是执行过程不一致而已。可以认为是 && 对 & 进行进行了优化 使 &&更加节省时间,
& 的所有表达式都要执行 ,而 && 从左到右执行,执行到false时,返回false,不在去执行后续表达式。
关系式1 && 关系式2 && 关系式3 理解: 关系式1为false 关系式2,关系式3就不在执行。 个人理解 :为false就短路 后续不在执行,故称为短路与。
关系式1 & 关系式2 & 关系式3 理解: 关系式1为false时,关系式2还是会执行 关系式3也会执行。
详解|| 与 | : || 和 | 的执行结果也是一致 ,执行过程不一致,|| 对 | 进行了优化 使 || 节省时间
| 的所有表达式都要执行 ,而 || 从左到右执行,执行到true时,就返回true,不在去执行后续表达式。
关系式1 || 关系式2 || 关系式3 理解: 关系式1为true 关系式2,关系式3就不在执行。 个人理解 :为false就短路 后续不在执行,故称为短路或。
关系式 | 关系式2 | 关系式3 理解: 关系式1为true时,关系式2还是会执行 关系式3也会执行。
自行思考 && 与& 当表达式1 为 true 时的过程,|| 与 | 当表达式1 为 false 时的过程。
6、位运算符 [需要二进制基础]
java 中有 7 个位运算 &、| 、^ 、 ~ 、 >> 、 << 和 >>> ,此运算符在Java中不常用,了解即可
按位与& 两位全为1,结果为1,否则为0
按位或| 两位有一个为1,结果为1,否则为0
按位异或^ : 两位一个为0,- 个为1,结果为1,否则为0
按位取反~ : 0->1 ,1->0
算术右移>>:低位溢出,符号位不变,并用符号位补溢出的高位
算术左移<<:符号位不变,低位补0
>>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0 .
特别说明: 没有<<<符号
7、三元运算符(三目运算符)
格式 :条件表达式 ? 表达式 1: 表达式 2;
- 如果条件表达式为 true,运算后的结果是表达式 1;
- 如果条件表达式为 false,运算后的结果是表达式 2
System.out.println(3>2?3:2);//3
System.out.println(2>3?2:3);//3
System.out.println(10<5?10:5);//返回什么? 根据上述规则判断