运算符
简述
Java运算符按其功能来分,有算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和其他运算符。
1、算术运算符
加减乘除:+ - * /
取余: %
int i = 101;
int j = i%10;
//j=1;
2、赋值运算符
赋值: =
赋值语句要从右往左看,是将 等号右边的值 赋给 左边的变量。
自加: ++ 和 自减: - -
int i = 1;
int j = i++;
//j=1;
//++在后则先运算再自加,自减同理
int i =1;
int j = ++i;
//j=2;
//++在前则先自加再运算,自减同理
3、比较运算符
等于: ==
比较两个变量的地址值,判断是否相等
int i = 1;
int j = 1;
System.out.println(i == j); //true
大于、小于、大于等于、小于等于、不等于:> 、< 、>= 、<= 、!=
int i = 3;
System.out.println(i>3); //false
System.out.println(i<3); //false
System.out.println(i>=3); //true
System.out.println(i<=3); //true
System.out.println(i!=3); //false
4、逻辑运算符
&& 、|| 、!
与: &&
运算符两端的判断条件 都成立 时则为 true , 否则为 false
int i = 1;
int j = 2;
System.out.println(i==1 && j==2); //true
System.out.println(i!=1 && j==2); //false
System.out.println(i==1 && j!=2); //false
或: ||
运算符两端的判断条件 只要有一个成立 就为 true
int i = 1;
int j = 2;
System.out.println(i==1 && j==2); //true
System.out.println(i!=1 && j==2); //true
System.out.println(i==1 && j!=2); //true
System.out.println(i!=1 && j!=2); //false
非: !
可以理解为不是,取反的意思
int i = 1;
System.out.println( !(i==1) ); //i==1为true,!(i==1)则为false
5、位运算符
& 、|、 ^、 ~、 <<、 >>、 >>>
与运算符: &
int i = 12;
int j = i&5;
//j=4;
(00001100为 12 的2进制,5 、4同理)
同位置上的两个数都为1则为1
或运算符:|
int i = 12;
int j = i|5;
//j=13;
同位置上有一个数值为1则为1
异或运算符: ^
int i = 12;
int j = i^5;
//j=9;
同位置上两个值不同则为1
非运算符: ~
int i = 12;
int j = ~i;
//j= -13;
同位置上1变成0,0变成1
PS:(当二进制第一位数为1时,这个数就是负数)
左移、右移、无符号右移: << 、>> 、>>>
int i = -12;
int j = i<<1;
int k = i>>1;
int z = i>>>1;
//j=-24; k=-6; z=6;
正数在第一位补 0,负数补 1,无符号右移不论正负都补0
6、三元表达式
布尔表达式?表达式1:表达式2
布尔表达式为 true 时执行表达式1,为 false 时执行表达式2
int i = 12;
int j = 5;
System.out.println(i<j?i:j);
//输出5,i<j成立就输出i,不成立就输出j
运算符实例
/*
*@description:输入密码,将其解码
*(解码规则为每位数乘5模3后,个位数与百位数交换,十位数与千位数交换)
*/
import java.util.Scanner;
public class Test{
public static void main(String[] args){
/**数值声明**/
int P,P1,P2,P3,P4;
/**数据赋值**/
Scanner sc = new Scanner(System.in);
System.out.println("请输入密码(0-9999):");
P = sc.nextInt();
/**业务逻辑**/
P1=P%10*5%3;
P2=P/10%10*5%3;
P3=P/100%10*5%3;
P4=P/1000%10*5%3;
P=P1*100+P2*1000+P3+P4*10;
/**输出**/
System.out.printf("你输入的密码是:\n%04d\n",P);
}
}
PS:%04d为格式化输出,让高位的 0 显示出来