运算符
来源:互联网 发布:centos 6.5 mirror 编辑:程序博客网 时间:2024/06/06 18:58
㈠ ++和--
前++(--):先加减后使用
后++(--):先使用后加减
例:
a = 1;
//a++: 后++, 先取a值,然后增加
b = (a++);//两个运算, 现在执行++ 运算, 然后执行赋值=运算
//执行顺序参考: b = (a++)
// ++运算 1) 先取"a"的值1 作为"a++表达式"的值1
// ++运算 2) 然后将a的值增加1, a为2
// = 运算 3) 将"a++ 表达式"的值1 赋值给 b为1
System.out.println(a+","+b); //2,1
-------------------------------------------------------------
a = 1;
a = a++;//两个运算, 现在执行++ 运算, 然后执行赋值=运算
// ++运算 1) 先取a的值1 作为"a++表达式"的值1
// ++运算 2) 然后将a的值增加1, a为2
// = 运算 3) 将"a++ 表达式"的值1 赋值给 a为1
System.out.println(a);//1
-------------------------------------------------------------
int a = 1;
int b;
b = ++a;//先++: 先增加,再使用
//运算顺序: 先++执行结束, 再赋值=
// ++ 运算 1) 先将a的值增加1, a为2
// ++ 运算 2) 再取a的值2作为 "++a 表达式"的值2
// = 运算 3) 将 "++a 表达式"的值2 赋值给b 为 2
System.out.println(a+","+b);//2,2
㈡ 赋值运算符
= += -= *= /= %= ............
例:
sum+=2
相当于sum=sum+2
㈢ 取余运算 "%"
/**
* 取余运算, 取模运算
* 获取除法结果中的余数
* 1) 负数取余的结果: 负数和0,工作很少使用,考试可能有!
* 2) 正数方向,n的余数是周期函数,并且小于n
* 在工作中, 周期性的运算经常采用 % 实现
*/
public class Demo02 {
public static void main(String[] args) {
int n = 5;
int m = n % 3;// 5/3 得 1 余 2
System.out.println(m);// 2
System.out.println(-4%3);//得 -1 余 -1
System.out.println(-3%3);//得 -1 余 0
System.out.println(-2%3);//得 0 余 -2
System.out.println(-1%3);//得 0 余 -1
System.out.println(0%3);//得 0 余 0
System.out.println(1%3);//得 0 余 1
System.out.println(2%3);//得 0 余 2
System.out.println(3%3);//得 1 余 0
System.out.println(4%3);//得 1 余 1
System.out.println(5%3);//得 1 余 2
System.out.println(6%3);//得 0 余 0
}
}
㈣ 逻辑运算
逻辑运算 : &&与 并且 ||或 或者 !非 否则
&& 是短路逻辑运算当第一个表达式是false时候,就直接得结果
& 非短路逻辑运算
建议:工作中大多使用 && 实现短路逻辑
㈤ 字符串连接运算 +
Java 中唯一"重载"的运算符是“+”:同名,但实际是两种功能
+ 两端数值,就进行 加法运算
+ 两端是字符串,就进行 字符串连接
㈥ 三目运算 布尔表达式 ? 表达式1 : 表达式2
/**
* 计算3个数字中的最大值
*/
public class Demo13 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in); // 控制台输入
int a,b,c;
System.out.print("输入a b c(空格分隔):");
//12 348 230
a = in.nextInt();//12
b = in.nextInt();//348
c = in.nextInt();//230
int max = a>b ? a : b;//348
max = max > c ? max : c;//348
System.out.println("最大值:"+max);//348
}
}
㈦ 比较运算符
比较运算符: >, <, >=, <=, ==, !=
㈧ 移位运算符
<< 左移位运算符
i=value<<num
将 value(的二进制补码) 向 左 移动 num 位
规则:丢弃最高位,0补最低位(高位溢出,低位补0)【数的正负符号会发生变化】
数学意义:在数字没有溢出的情况下,左移n位都相当于乘以 基数 的 n 次方
>> 右移位运算符 算数右移
i=value>>num
将 value 向 右 移动 num 位
规则:符号位不变,左边不上符号位(低位溢出,高位补符号位)
数学意义:数字右移 n 位,相当于 除以 基数 的 n 次方
>>> 无符号右移 逻辑右移
i=value>>>num
将 value 向 右 移动 num 位
规则:忽略了符号位扩展,0补最高位!
/**
* 移位运算常见面试题
*/
public class Demo05 {
public static void main(String[] args) {
// 最快速的实现 n * 8(2 的 n次幂)
int n = 5;// 00000000 00000000 00000000 00000101
int a = n<<3;// 00000 00000000 00000000 00000101 000
System.out.println(a);//40
//最快速的实现 n / 8(2 的 n次幂)
}
}