Java常见的运算符
- 算数运算符
- 赋值运算符
- 一元运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 位移运算符
- 三元运算符
算术运算符
+(加) ,-(减),*(乘),/(除),%(求余)
算术运算规则
两个数字做 算术运算的时候,满足以下规则
如果两个数中有 double 类型,结果一定是double类型
如果两个数中有float类型,结果一定是float类型
如果两个数中有long类型,结果一定是long类型
赋值运算符
=(赋值) += , -= , *= , /=, %=
赋值运算符(除=) 不会提升变量的数据类型
一元运算符
a++ a--
++a --a
a++ 或者 ++a 都可以即作为 语句,也可以作为表达式来使用
a++ : 先计算 a++ 表达式的值,表达式的值等于a的值, 再对a自增1
++a : 先对 a 自增1, 在计算 ++a 表达式的值, 表达式的值等于a的值
int a = 5 ;
int b = (a--) + (--a) + (a--) ;
关系运算符
> , >= , < , <= , == , !=
关系运算符是一个表达式、返回的结果是 boolean 类型
关系运算符常用来做条件判断
6 > a > 3 (语法错误的), a > 3, a < 6
逻辑运算符
&& (逻辑与) , || (逻辑或) , !(逻辑非)
& (逻辑与) , | (逻辑或)
逻辑运算符是一个表达式、返回的结果是 boolean 类型
逻辑运算符常用来做条件判断
a > 3 && a < 6 (正确写法)
&&
和||
会产生短路现象,&
和|
不会产生短路
&&
:一假即假, 当第一个表达式为假的时候,那么第二个表达式不参与运算||
: 一真即真, 当第一个表达式为真的时候,那么第二个表达式不参与运算
通常推荐使用&&
和||
位运算符
位运算只能应用于整数类型
主要是通过二进制进行运算的
位运算的运算速度是最高效的
& (位与) ,| (位或) , ~(位非) ,^ (异或)
在位运算中,我们可以简单的把1就理解为true,0理解为 假
&
:相同位 如果有0,结果为0,否则为1|
:相同位 如果有1,结果为1,否则为0~
:按位取反,原来是1 变为0,原来是0变为1^
: 相同位 不同结果为1,否则为0;
public class Test3{
public static void main(String[] args){
int key=2022;//密钥
String keystr="";//接收加密后拼接的字符串
String s="每天都要快乐";
for(int i=0;i<s.length();i++){
char z=s.charAt(i); //获取每个字符
char f=(char)(z^key);//每个字符与key异或 加密
keystr +=f;
}
System.out.println(keystr);
String oldstr="";
for(int i=0;i<keystr.length();i++){
char z=keystr.charAt(i);
char f=(char)(z^key);
oldstr +=f;
}
System.out.println(oldstr);
}
}
位移运算符
位移运算只能应用于整数类型
主要是通过二进制进行运算的
位移运算的运算速度是最高效的
<<(左移) , >>(右移), >>>(无符号右移)
5
0000 0000 0000 0000 0000 0000 0000 0101
-4
1111 1111 1111 1111 1111 1111 1111 1100
左移:一个数的二进制向左边移动指定位数,在低位补0
右移: 一个数的二进制向右边移动指定位数,在高位正数补0,负数补1
无符号右移:一个数的二进制向右移动指定位数,在高位补0
三元运算符
是一个表达式 , 不能单独使用
语法:exp ? exp1 : exp2
exp表达式 必须是一个 返回 boolean的表达式
当exp表达式为true