前言
为实现逻辑和运算要求,编程语言设置了各种不同的运算符,且有优先级顺序,所以有的初学者使用复杂表达式的时候搞不清楚。这里详细介绍一下Java中的常用操作符。
java的操作符主要分为有以下:1、算数运算符;2、赋值运算符;3、自增自减运算符;4、关系操作符;5、逻辑操作符;6、三元运算符。算术运算符号,就是用来处理四则运算的符号,这是最简单,也最常用的符号,尤其是数字的处理,几乎都会使用到算术运算符号。
当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。最简单的就是先乘除后加减,但经常会忘记,所以可以用括号明确规定计算顺序。
赋值运算符
赋值使用操作符 “=”,它的意思是‘取右边的值赋值给左边’
可以将一个常数赋值给一个变量-基础类型赋值,如下:
int a=1;
a = 10;
算数操作符
java的算术运算符与其他大多程序设计语言是相同的。其中包括加(+)、减(-)、乘(*)、除(/)以及取模操作符(% ,整数除法中产生的余数)。
示例:
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 3;
int i;
i = a + b;
System.out.println("a + b : " + i);
i = a - b;
System.out.println("a - b : " + i);
i = a * b;
System.out.println("a * b : " + i);
i = a / b;
System.out.println("a / b : " + i);
i = a % b;
System.out.println("a % b : " + i);
}
}
运行结果:
a + b : 13
a - b : 7
a * b : 30
a / b : 3
a % b : 1
自增自减运算符
主动递增操作符 “++”,主动递减操作符 “--”,如 ++a 就等同于 a= a+1
这两个操作符各有两种使用方式,通常称为“前缀式” 和 ”后缀式“
前缀式:先执行运算,再生成值; 后缀式:先成值,再执行运算
示例:
public static void main(String[] args) {
int i = 1;
System.out.println("i : " + i);
System.out.println("++i : " + ++i);
System.out.println("i++ : " + i++);
System.out.println("i : " + i);
System.out.println("--i : " + --i);
System.out.println("i-- : " + i--);
System.out.println("i : " + i);
}
运行结果:
i : 1
++i : 2
i++ : 2
i : 3
--i : 2
i-- : 2
i : 1
关系操作符
关系运算符生成的是一个boolean类型的结果,即ture / false。关系运算符包括小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、等于(==)、不等于(!=)
== 和 != 适用于所有数据类型 ,也适用于所有对象
示例
int a = 1;
int b = 2;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a == b);
String s = "s";
String s1 = "s";
System.out.println(s == s1);
结果
false
true
false
true
逻辑操作符
逻辑操作符:与( && )、或( || )、 非( ! ) ,根据参数的逻辑关系,生成一个布尔值(true 或false)。只可适用于布尔值。
示例
public static void main(String[] args) {
int a = 10;
int b = 3;
System.out.println("((a > b) && (b < 5)) : " + ((a > b) && (b < 5)));
System.out.println("((a > b) || (b < 5)) : " + ((a > b) || (b < 5)));
System.out.println("!((a > b) && (b < 5)) : " + !((a > b) || (b < 5)));
}
结果
((a > b) && (b < 5)) : true
((a > b) || (b < 5)) : true
!((a > b) && (b < 5)) : false
按位操作符
按位操作符包括 按位与‘&’、按位或"|"、按位非"~"、按位异或‘^’;用来操作整数基本数据类型中的单个‘bit’,即二进制位.布尔类型作为一种单比特值对待。 按位操作符可与等号‘=’联合使用,以便合并运算和赋值。除了按位非‘~‘(由于按位非为一元操作符)
- 按位与‘&’ : 任意二进制位与0进行&运算,结果是0;与1进行&运算,结果是其原值。即两数对应的二进制位都为1,结果才是1;例:1&0 = 0;0&0 = 0;1&1 = 1。
- 按位或'|' :任意二进制位与0进行 | 运算,结果为其原值;与1进行 | 运算,结果为1。即两数对应的二进制位有一个为1,结果就为1;1 | 0 = 0;0 | 0 = 0。
- 按位异或^ :任意相同二进制位进行^运算,结果为0;任意不同二进制位进行 ^ 运算,结果为1.
- ~ :按位取非,
- ~正数:①正数的二进制全部(包含符号位)按位取反(不是求反码),②对取反后的值除了符号位再取反即求反码,③+1。(其实就是取反符号位后+1)
- ~负数:①负数的二进制全部(包含符号位)按位取反,②+1,③不包含符号位再取反。
示例
public static void main(String[] args) {
byte a = 10; // 对应二进制 1010 补齐八位即 00001010
byte b = 3; // 对应二进制 0011 补齐八位即 00000011
System.out.println("a | b : " + (a | b)); // 按位或得到 1011 即十进制的 11
System.out.println("a & b : " + (a & b)); // 按位与得到 0010 即十进制的 2
/**
* ① b是正数先按位取反得到二进制 11110101 (包括符号位--第一位)
* ② 对取反后的值除了符号位再取反即求反码 得到 10001010
* ③ +1 即得到 10001011 对应十进制 -11
*/
System.out.println("~b : " + ~b);
System.out.println("a ^ b : " + (a ^ b)); // 按位异或得到 1001 即十进制的 9
System.out.println("(true | false) : " + (true | false));
}
运行结果
a | b : 11 a & b : 2 ~a : -11 a ^ b : 9 (true | false) : true
三元操作符
三元操作符又称条件操作符,它有三个操作数,根据这三个操作数,最终生成一个值。
boolean表达式 ? value0 : value1
如果boolean表达式结果为true,计算value0结果 为最终产生的值
如果boolean表达式结果为false,计算value1结果 为最终产生的值
示例
int a = 10;
// 使用三元操作符判断a的大小,生成对应的值给变量b赋值
int b = a > 10 ? 10 : 20;
也可以换用普通的if-else
int a = 10;
int b;
if (a > 10) {
b = 10;
} else {
b = 20;
}