算术运算符
赋值运算符
关系运算符(比较)
逻辑运算符
位运算符
三元运算符(条件)
运算符 | 详解 | 实例 | 结果 |
---|---|---|---|
+ | 其用法主要分三个方面:1.表示正数;2.两边数字相加;3.拼接(将两边字符串拼接) | 1.表示正数 :+(-2);2.表示数字相加:两边必须都是整型;3.讲两边字符串进行拼接处理; | 1.将负数转换为正数(2)2.若”+“两边其中一个是字符型“+”将作为字符串连接符使用(也就是第三个用法);3.在**(1.1)**处详解; |
- | 1.表示负数;2.减法运算符 | 1.可以将正数转换为负数,或直接声明负数;2.减法运算,”-“两边必须都是整型 | |
* | 乘 | 两边必须都是整型 | |
/ | 除 | 两边必须都是整型 | 0不可以作为除数进行运算会报错 |
% | 取模运算(取余) | 两边必须都是整型;取“%”前面的数除以后面的数的余数 | 在**(1.2)**处详解; |
++ | 自增 | 自增分为前自增和后自增(i)(i) | 在**(1.3)**处详解; |
– | 自减 | (i–)(–i) | 在**(1.3)**处详解 |
//+既可以做拼接字符处理,也可以做加法运算符,在java中优先级是怎样的
System.out.println("6+7="+6+7);
System.out.println(6+7+"=6+7");
//结果;
6+7=67
13=6+7
//如果第一个+做拼接字符串处理那么同一语句后面的+都当做拼接运算
//但是如果+在拼接运算前面则不受影响;
//测试
System.out.println(70%7);
System.out.println(70%6);
System.out.println(70%90);
System.out.println(70%100);
System.out.println(0%70);
System.out.println(70%0);
//结果
0
4
70
70
0
Exception in thread "main" java.lang.ArithmeticException:
//扩展:java.lang.ArithmeticException
//数学运算异常,类似上面0作为除数进行取模会出现该错误
//首先要知道i++与++i的结果和i+1是一样的
//但是i++要比i+1效率高
int i=0;
int j=i++;//这一语句相当于 int j=i; i=i+1;
System.out.println("i="+i+"-----j="+j);
int a=0;
int b=++a;//这一语句相当于 a=a+1; b=a;
System.out.println("a="+a+"-----b="+b);
//结果
i=1-----j=0
a=1-----b=1
//也就是说i++相当于先将i进行赋值再运算i+1
//++i则是先运算再赋值;
//--同上
运算符 | 运算 | 实例 | 结果 |
---|---|---|---|
= | 赋值 | int a=4; String b=“java学习”; | 将4赋值给a将字符串赋值给b |
+= | 加等于 | a=3;b=2;a+=b;(a=a+b下同) | a=5;b=2; |
-= | 减等于 | a=3;b=2;a-=b; | a=1;b=2; |
*= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2; |
/= | 除等于 | a=3;b=2;a/=b; | a=1;b=2; |
%= | 模等于 | a=3;b=2;a%=b; | a=1;b=2; |
运算符 | 含义 | 说明 | 实例 | 结果 |
---|---|---|---|---|
> | 大于 | 只支持左右两边操作数是数值类型。如果前面变量的值大于后面变量的值, 则返回 true。 | 2>3 | false |
>= | 大于或等于 | 只支持左右两边操作数是数值类型。如果前面变量的值大于或等于后面变量的值, 则返回 true。 | 4>=2 | true |
< | 小于 | 只支持左右两边操作数是数值类型。如果前面变量的值小于后面变量的值,则返回 true。 | 2<3 | true |
<= | 小于或等于 | 只支持左右两边操作数是数值类型。如果前面变量的值小于或等于后面变量的值, 则返回 true。 | 4<=2 | false |
== | 相等 | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值相等,也都将返回 true。如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象(内存地址)就会返回 false。Java 也支持两个 boolean 类型的值进行比较。 | 4497’a’5.05truefalseInteger i=new Integer(0); Integer a=new Integer(0); i==a | truetruetruefalsefalse |
!= | 不相等 | 如果进行比较的两个操作数都是数值类型,无论它们的数据类型是否相同,只要它们的值不相等,也都将返回 true。如果两个操作数都是引用类型,只有当两个引用变量的类型具有父子关系时才可以比较,只要两个引用指向的不是同一个对象(内存地址)就会返回 true。 | 4!=2 | true |
运算符 | 用法 | 含义 | 说明 | 实例 | 结果 |
---|---|---|---|---|---|
&& | a&&b | 短路与 | ab 全为 true 时,计算结果为 true,否则为 false。只有两边条件都为真时结果才为真; | 2>1&&3<4 | true |
|| | a||b | 短路或 | ab 全为 false 时,计算结果为 false,否则为 true。只要一边条件为真时结果就为真; | 2<1||3>4 | false |
! | !a | 逻辑非 | a 为 true 时,值为 false,a 为 false 时,值为 true | !(2>4) | true |
逻辑运算符还有**逻辑与(&)和逻辑或(丨)**在位运算符中讲;
(什么是短路:如果第一个条件不符合则不执行后面的条件)
//短路测试
int i = 0;
boolean a = i==1 && ++i==1;
System.out.println(a);
System.out.println(i);
int j = 0;
boolean b = i==0 && ++j==1;
System.out.println(b);
System.out.println(j);
//结果
false
0
true
1
位运算符相当于二进制运算符
而且位运算符不能对float、double、Boolean进行位运算
在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)
其中只有 ~ 是单目运算符
就是将两个变量的二进制进行比较;
比较都为1则返回1,一个为0则返回0;
详细点:
//先提出问题这两句语句会打印出什么?
int i=13;
System.out.println(i&14);
//首先算一下13的二进制(算法可以百度)
//这里得出i的二进制:00001101 再计算出14的二进制00001110
//13:00001101
//14:00001110
//按位与运算就是将每一位二进制进行比较,都为1则为1
//这样得出:00001100
//那么将00001100转换为10进制就是System.out.println(i&14);的结果
12
比较二进制一个为1则返回1,都为0则返回0;
int i=13;
System.out.println(i|14);
//13:00001101
//14:00001110
//根据上面的规则得到:00001111
//会打印15
首先写法上相同,只是两边的变量不同,
对于两个逻辑量,
true&true
也是按照二进制进行比较的,只是如果相同,根据上面的规则肯定也十分返回true,与短路与只是差了短路而已,所以也叫逻辑与;
逻辑或同理;
比较二进制两个相同则返回0,不同则返回1
按位异或也可以当做逻辑运算符使用【就是说当一个条件为真另一个为假,则返回true,否则false】
int i=13;
System.out.println(i^14);
//13:00001101
//14:00001110
//根据上面的规则得到:00000011
//结果3
单目运算符:只需要一个变量进行运算
见名知意,将其二进制1换成0,0换成1
//13:00001101
System.out.println(~13);
//1111001
//二进制中还存在正负数分别用1,0表示
//结果可以试一下,想一下原因
左移:将其二进制向左移动n位
//13:00001101
System.out.println(13<<2);
//移动后补位0
//移动后:00110100转换成10进制为52
//左移规律:每向左移动一位则相当于其十进制乘以2,13<<2要比13*2*2效率高
带符号右移:将其二进制向右移动n位
//13:00001101
System.out.println(13>>2);
//移动后补位0
//移动后:00000011转换成10进制为3
//右移规律:每向右移动一位则相当于其十进制除以2
负数有符号右移计算-4>>2
首先我们需要取得-4的补码 补码为反码+1
反码为正码按位取反
由正码0000 0100 取反得
1111 1011
再+1得
1111 1100
右移两位,符号位为1,所以高位置1得
1111 1111
此时减一得补码
1111 1110
补码转正码得
0000 0001
十进制为1,加负号得
-1
与右移相同,左边都用0补位 不管符号是什么;
由(?:)符号表示的,具体的含义其实就和if-else结构的含义差不多,这种运算符会将某个条件作两种处理,如果满足条件的话就执行第一个结果,如果不满足的话就执行另外一个结果,例如: Int A,B,C; A=2; B=3; C=A>B ? 100 :200; 这条语句的意思是,如果A>B的话,就将100赋给C,否则就将200赋给C;
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有