第四章 运算符
运算符
运算符介绍
运算符是一种特殊的符号,用以表示数据的运算、赋值、比较等。
算术运算符

自增:++
// 如果作为独立语句使用,前++和后++作用一样都等价于i = i + 1;
//作为表达式使用时
i++; //先自增再赋值
++i; //先赋值再自增
int i = 8;
int j = ++i;//等价于i = i + 1; j = i;
int j = i++; // 等价于 j = i; i = i + 1;
经典面试题:
int i = 1;
i = i++;
System.out.println("i=" + i);
int j = 1;
j = ++j;
System.out.println("j=" + j);
// i = 1 , j = 2
关于i的执行步骤:
- temp = i ;
- i = i + 1;
- i = temp;
关于j的执行步骤:
- j = j + 1;
- Temp = j;
- j = temp;
关系运算符
关系运算符的结果都是boolean型的要么为True要么为False
经常会用在if的条件语句或者循环语句中

逻辑运算符
用于连接多个条件,返回值也是boolean型的。


逻辑与 和 短路与的区别:
- &&短路与,若第一个条件为False则第二个条件不会判断,直接输出结果为False
- &逻辑与,不管第一个条件是否为False,第二个条件都会进行判断效率低
结论:开发中,我们基本上都使用&&,效率高!
逻辑或 和 短路或的区别:
- ||短路或,如果第一个条件为True,则不会判断第二个条件,直接输出结果为:True
- |逻辑或,不管第一个条件是否为True,都要判断第二个条件,效率低
结果:开发中,我们基本上都使用||(短路或),效率高!
赋值运算符
复合运算符会进行类型转换
byte a = 2;
a += 2;
// 此时输出的a为int型
三元运算符
-
基本语法
条件表达式 ?表达式1 : 表达式2;
-
运算规则
- 如果表达式为:True,运算后的结果为:表达式1
- 如果表达式为:False,运算后的结果为:表达式2
-
细节
表达式1和表达式2要为可以赋值给接收变量的类型(或可以自动转换,强制转换)
键盘输入
引入一个Scanner类,并且创建一个对象。
import java.util.Scanner;
public class input{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
int age = myScanner.nextInt();
double wage = myScanner.nextDouble();
String name = myScanner.next();
char gender = myScanner.next().charAt(0);
}
}
二进制
二进制其他进制
- 二进制转十进制:
- 从最低位开始,每一位的数字乘以2的位次数➖1次方,然后求和
- 八进制转十进制:
- 从最低位开始,每一位的数字乘以8的位次数➖1次方,然后求和
- 十六进制转十进制:
- 从最低位开始,每一位的数字乘以16的位次数➖1次方,然后求和
十进制转其他进制
- 十进制转二进制:
- 将该数不断除以2,直到商为0,然后将每一步得到的余数倒过来,就是对应的二进制
- 十进制转八进制:
- 将该数不断除以8,直到商为0,然后将每一步得到的余数倒过来,就是对应的八进制
- 十进制转十六进制:
- 将该数不断除以16,直到商为0,然后将每一步得到的余数倒过来,就是对应的十六进制
二进制转其他进制
- 二进制转八进制:
- 从低位开始,将二进制数每三位一组,转成对应的八进制数即可
- 二进制转十六进制:
- 从低位开始,将二进制数每四位一组,转成对应的十六进制数即可
其他进制转二进制
- 八进制转二进制:
- 将八进制每一位数,转成对应的一个3位的二进制数即可
- 十六进制转二进制:
- 将十六进制每一位数,转成对应的一个4位的二进制数即可
位运算
// >> 向右位移,<< 向左位移, >>> 逻辑右移,~ 按位取反, & 按位与, |按位或, ^ 按位异或
原码、反码、补码
- 二进制的最高位是符号位,0表示正数,1表示负数
- 正数的原码反码和补码都一样(三码合一)
- 负数的反码 = 它的原码符号位不变,其余位取反
- 负数的补码 = 它的反码 + 1, 负数的反码 = 它的补码 - 1
- 0 的反码补码都是 0
- Java的数都是有符号的
- 在计算机运算的时候,都是以补码的形式进行运算的
- 当我们看计算结果时,要看它的原码
位移运算
- 算数右移(>>):低位溢出,符号位不变,并用符号位补溢出的高位
- 算数左移(<<):符号位不变,低位补0
- 逻辑友谊(>>>):低位溢出高位补0
- 特别说明:没有<<<符号
int a = 1 >> 2; // a = 0 本质为:1 / 2 / 2
int b = 1 << 2; // b = 4 本质为:1 * 2 * 2

浙公网安备 33010602011771号