🏡个人主页 :@ 守夜人st
🚀系列专栏:Java
…持续更新中敬请关注…
🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点
✈️推荐一款模拟面试,刷题,从基础走向大场面试👉 开启你的刷题之路吧
Java运算符
活动地址:CSDN21天学习挑战赛
算数运算符
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
+ | 加 | 求和 | a + b |
- | 减 | 求差 | a - b |
* | 乘 | 求积 | a * b |
/ | 除 | 求商 | a / b |
% | 取余 | 求a除以b的余数 | a % b |
- | 取反 | 取反运算 | b = -a |
++ | 自增 | 先取值再加一(先加一再取值) | a++(++a) |
– | 自减 | 先取值再减一(先减一再取值) | a–(–a) |
关系运算符
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
== | 等于 | a等于b时返回true,否则返回false(也可用于引用类型数据) | a==b |
!= | 不等于 | 与==相反 | a!=b |
> | 大于 | a大于b时返回true,否则返回false | a>b |
< | 小于 | a小于b时返回true,否则返回false | a<b |
>= | 大于等于 | a大于等于b时返回true,否则返回false | a>=b |
<= | 小于等于 | a小于等于b时返回true,否则返回false | a<=b |
逻辑运算符
运算符 | 名称 | 说明 | 例子 |
---|---|---|---|
! | 非 | a为true时,值为falsea为false时,值为true | !a |
& | 与 | ab全为true时,计算结果为true,否则为false | a & b |
| | 或 | ab全为false时,计算结果为false,否则为true | a|b |
&& | 短路与 | ab全为true时,计算结果为true 否则为false,&&与&区别:如果a为false,则不计算b(因为不论b为何值,结果都为false) | a &&b |
|| | 短路或 | ab全为false时,计算 果a为true,则不计算b(因为不论b为何值,结果都为 true | a||b |
位运算符
赋值运算符
运算符 | 名称 | 例子 |
---|---|---|
+= | 加赋值 | a += b 等价于 a = a + b |
-= | 减赋值 | a -= b 等价于 a = a - b |
*= | 乘赋值 | a *= b 等价于 a = a * b |
/= | 除赋值 | a /= b 等价于 a = a / b |
%= | 取于赋值 | a %= b 等价于 a = a % b |
字符串连接运算符
int a = 100;
int b = 200;
// 这里的 + 两边都是数字,所以加法运算
int c = a + b;
System.out.println(a + "+" + b + " = " + a + b);//100+200=100200
System.out.println(a + "+" + b + " = " + (a + b));//100+200=300
- 当 + 运算符两边都是
数字类型
的时候,求和。 - 当 + 运算符两边的“
任意一边
”是字符串类型
,那么这个+会进行字符串拼接操作。
其他运算符
除了前面介绍的主要运算符,Java还有一些其他运算符。
三元运算符(? :)例如x?y:z;,其中x、y和z都为表达式。
小括号起到改变表达式运算顺序的作用,它的优先级最高。
中括号数组下标。
引用号 (.)对象调用实例变量或实例方法的操作符,也是类调用静态变量或静态方法的操作符。
赋值号(=)赋值是用等号运算符(=)进行的。
instanceof:判断某个对象是否为属于某个类。
new :对象内存分配运算符。
箭头(->)😗*Java 8新增加的,用来声明Lambda表达式
双冒号(::)😗*Java 8新增加的,用于Lambda表达式中方法的引用。
此外,还有一些鲜为人知的运算符,随着学习的深入相信大家会有机会遇到的!
运算优先级
测试程序:
package com.shouyerenst;
public class Operator {
public static void main(String[] args) {
System.out.print("算数运算符:");
System.out.println("=============================");
int i = 10;
int j = 3;
System.out.println(i+j);// 13
System.out.println(i-j);// 7
System.out.println(i*j);// 30
System.out.println(i/j);// 3
System.out.println(i%j);// 1
int a = 12;
System.out.println(-a);// -12
int b = a++;
System.out.println(b); //12
b = ++a;
System.out.println(b); // 14
System.out.println("=============================");
System.out.print("赋值运算符:");
System.out.println("=============================");
int c = 1;
int d = 2;
c += d;
System.out.println(c);// 3
c -= d;
System.out.println(c);// 1
c *= d;
System.out.println(c);// 2
c /= d;
System.out.println(c);// 1
c %= d;
System.out.println(c);// 1
System.out.println("=============================");
//关系运算符
System.out.print("关系运算符:");
System.out.println("=============================");
int value1 = 1;
int value2 = 2;
if (value1 == value2) {
System.out.println("value1 == value2");
}if (value1 != value2) {
System.out.println("value1 != value2");
}if (value1 > value2) {
System.out.println("value1 > value2");
}if (value1 < value2) {
System.out.println("value1 < value2");
}if (value1 <= value2) {
System.out.println("value1 <= value2");
}
System.out.println("=============================");
System.out.print("位运算符:");
System.out.println("=============================");
byte byteNum1 = 0B00110010; //十进制50
byte byteNum2 = 0B01011110; //十进制94
System.out.println("byteNum1 | byteNum2 = " + (byteNum1 | byteNum2)); // 0B01111110 (126)
System.out.println("byteNum1 & byteNum2 = " + (byteNum1 & byteNum2)); // 0B00010010 (18)
System.out.println("byteNum1 ^ byteNum2 = " + (byteNum1 ^ byteNum2)); // 0B01101100 (108)
System.out.println("~byteNum2 = " + (~byteNum2)); // 0B10100001 (-95)
System.out.println("byteNum1 >> 2 = " + (byteNum1 >> 2)); // 0B00001100 (12)
System.out.println("a >> 1 = " + (byteNum1 >> 1)); // 0B00011001 (25)
System.out.println("byteNum1 >> 1 = " + (byteNum1 >>> 2)); // 0B00001100 (12)
System.out.println("byteNum1 << 2 = " + (byteNum1 << 2)); // 0B11001000 (200)
System.out.println("byteNum1 << 1 = " + (byteNum1 << 1)); // 0B01100100 (100)
int byteNum3 = -12;
System.out.println("byteNum3 >>> 2 = " + (byteNum3 >>> 2));// 1073741821
System.out.println("byteNum3 >> 2 = " + (byteNum3 >> 2));// -3
}
}
运行结果:
算数运算符:=============================
13
7
30
3
1
-12
12
14
=============================
赋值运算符:=============================
3
1
2
1
1
=============================
关系运算符:=============================
value1 != value2
value1 < value2
value1 <= value2
=============================
位运算符:=============================
byteNum1 | byteNum2 = 126
byteNum1 & byteNum2 = 18
byteNum1 ^ byteNum2 = 108
~byteNum2 = -95
byteNum1 >> 2 = 12
a >> 1 = 25
byteNum1 >> 1 = 12
byteNum1 << 2 = 200
byteNum1 << 1 = 100
byteNum3 >>> 2 = 1073741821
byteNum3 >> 2 = -3
总结:
运算符优先级大体顺序,从高到低是:算术运算符→位运算符→关系运算符→逻辑运算符→赋值运算符。
算法对程序员来说及其重要,语言和开发平台不断变化,但是万变不离其宗的是那些算法和理论,刷算法最最最直白的原因就是找一个好的工作,那刷题一定是必不可少的
现在算法刷题平台还是蛮多的,给大家介绍一个我认为与大厂关联最深的平台——牛客网 跳转链接