1、算术运算符
基本四则运算符 + - * / %
这些运算符都比较简单,需要注意的是除法 /。
a) int/int结果还是int,当计算结果不为整数时,需要使用double来计算。
比如:
int a = 1;
int b = 2;
System.out.println(a/b);
//结果为0
b) 0不能作为除数
c) %表示取余,不仅仅对int求模,也能对double求模
比如:
System.out.println(11.5%2.0);
// 运行结果
1.5
增量赋值运算符 += -= *= /= %=
这些运算符同样很简单,与c语言的用法相同
int a = 10;
a += 1;
System.out.println(a);
// 运行结果
11
自增、自减运算符 ++ –
int a = 10;
int b = ++a;
System.out.println(b);
int c = a++;
System.out.println(c);
//运行结果
11
10
结论:
1、如果不取自增运算符的表达式的返回值,则前置自增和后置自增没有区别。
2、如果取表达式的返回值,则前置自增的返回值是自增之后的值,后置自增的返回值是自增之前的值。
2、关系运算符
关系运算符主要有六个:== != < > <= >=
int a = 10;
int b = 20;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a < b);
System.out.println(a > b);
System.out.println(a >= b);
System.out.println(a <= b);
注意:关系运算符的表达式返回值都是boolean类型。
3、逻辑运算符
逻辑运算符主要有三个:
&& || !
注意:逻辑运算符的操作数和返回值都是boolean。
逻辑与 &&
规则:两个操作数都是true,结果为true,否则为false。
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b && b <c);
// 运行结果
true
逻辑或 ||
规则:两个操作数都为false,结果为false,否则为true。
int a = 10;
int b = 20;
int c = 30;
System.out.println(a < b || b <c);
// 运行结果
true
逻辑非 !
规则:操作数为true,结果为false;操作数为false,结果为true。
在这里需要注意的是 操作数必须为boolean类型,与c语言中不同,比如:
int a = 10;
int b = 20;
System.out.println(!a < b);
// 这里程序跑不过 因为(!a)不是boolean类型
//如果想正常跑过应为:
System.out.println(!(a < b));
// 运行结果
false
4、位运算符
java中对数据的操作的最小单位不是字节,而是二进制位
位运算符只要有四个:
& | ~ ^
按位与 &
如果二进制都为1,则结果为1,否则为0.
int a = 2;
int b = 3;
System.out.println(a & b);
// 运行结果
2
注:进行按位运算时,需要把2和3转化成二进制,分别为0010和0011
按位或 |
如果两个二进制位都是0,则结果为0,否则结果为1.
int a = 2;
int b = 3;
System.out.println(a | b);
// 运行结果
3
按位异或 ^
如果两个数字的二进制位相同,则结果为0,相异结果为1。
int a = 2;
int b = 3;
System.out.println(a ^ b);
// 运行结果
1
按位取反 ~
如果该位为0则转化为1,如果该位为1则转化为0.
5、移位运算
移位运算符有三个:<< >> >>>
左移 << :最左侧位不要了,最右侧补0
int a = 0x10;
System.out.printf("%x\n",a<<1);
// 运算结果
20
相当于给原数字*2^n n表示左移的位数
右移>>:最右侧位不要了,最左侧补符号位(正数补0,负数补1)
int a = 0x10;
System.out.printf("%x\n",a>>1);
// 运算结果
8
相当于给原数字/2^n n表示右移的位数
无符号右移 >>> :最右侧位不要了,最左侧补0
于右移 >>的区别是,无符号右移>>>不关注符号位,直接补0
注:没有无符号左移
6、条件运算符
条件运算符只有一个:
表达式1?表达式2:表达式3
注:表达式1必须为boolean类型
当 表达式1 的值为true时,整个表达式的值为 表达式2 的值;当 表达式1 的值为false时,整个表达式的值为 表达式3 的值
// 求两个整数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
以上就是我总结的一些运算符的知识,如果有问题欢迎提出,谢谢阅读!