目录
1.1 进制
1.1.1 进制转换函数
1.2 运算符
1.2.1 算术运算符
1.2.2 比较运算符
1.2.3 逻辑运算符
1.2.4 位运算符(不常用)
1.2.5 三元运算符
1.2.6 运算符优先级
1.1 进制
- 二进制:0B或0b开头
- 八进制:0开头
- 十六进制:0x或0X开头;0-9及A-F,字母不区分大小写
1.1.1 进制转换函数
api文档中搜索Integer,在Integer类中可以找到进制转换函数。
例如:
int a = 072; String str = Integer.toString(a); //转换为十进制以字符串形式输出 System.out.println(str); //输出:58
1.2 运算符
1.2.1 算术运算符
- 取模运算的正负号情况
int a = -12;
int b = 5;
System.out.println(a%b); //-2
int c = 12;
int d = -5;
System.out.println(c%d); //2
结果的符号与被模数(前者)的符号相同
-
关于自增/自减
short a = 10;
//如果想让a自增一
a = a + 1; //因为自动类型转换而编译失败
a = (short)(a + 1); //编译通过
a++; //编译通过
自增/自减不会改变变量本身的类型,且效率更高
- 赋值运算符
- 支持连续赋值
int a,b;
a = b = 7;
- 扩展:+=、-=、*=、/=、%= (同样也不会改变变量本身的数据类型)
short a = 7;
a += 1;
System.out.println(a); //8
a *= 0.3;
System.out.println(a); //2
1.2.2 比较运算符
- 取模运算的正负号情况
int a = -12; int b = 5; System.out.println(a%b); //-2 int c = 12; int d = -5; System.out.println(c%d); //2
结果的符号与被模数(前者)的符号相同
-
关于自增/自减
short a = 10; //如果想让a自增一 a = a + 1; //因为自动类型转换而编译失败 a = (short)(a + 1); //编译通过 a++; //编译通过
自增/自减不会改变变量本身的类型,且效率更高
- 赋值运算符
- 支持连续赋值
int a,b; a = b = 7;
- 扩展:+=、-=、*=、/=、%= (同样也不会改变变量本身的数据类型)
short a = 7; a += 1; System.out.println(a); //8 a *= 0.3; System.out.println(a); //2
- 支持连续赋值
1.2.2 比较运算符
运算结果都是布尔型
1.2.3 逻辑运算符
- 区分& 和 &&
//在逻辑判断中使用&
int num = 7;
boolean flag = false;
if(flag & (num++ > 0)) {
System.out.println("YES!");
}else {
System.out.println("NO!"); //NO!
}
System.out.println(num); //8
//在逻辑判断中使用&&
num = 7;
if(flag && (num++ > 0)) {
System.out.println("YES!");
}else {
System.out.println("NO!"); //NO!
}
System.out.println(num); //7 使用&时若前面的条件为false,仍会进行后面的条件判断,但若使用&&时前面false,则不会进行后面的判断,故称为短路与。|与||类似。
1.2.4 位运算符(不常用)
//在逻辑判断中使用&
int num = 7;
boolean flag = false;
if(flag & (num++ > 0)) {
System.out.println("YES!");
}else {
System.out.println("NO!"); //NO!
}
System.out.println(num); //8
//在逻辑判断中使用&&
num = 7;
if(flag && (num++ > 0)) {
System.out.println("YES!");
}else {
System.out.println("NO!"); //NO!
}
System.out.println(num); //7 使用&时若前面的条件为false,仍会进行后面的条件判断,但若使用&&时前面false,则不会进行后面的判断,故称为短路与。|与||类似。
位运算是直接对整数的二进制进行的运算
- 面试题:最高效的方式计算2 * 8?
- 2 << 3 或 8 << 1 时间复杂度均为O(1),常数级
1.2.5 三元运算符
- 格式
- 三元运算符与if-else的联系与区别
- 三元运算符可以简化if-else语句
- 三元运算符必须返回一个结果
- if后的代码块可以有多个语句
- 如果程序既可以使用三元,又可以使用if-else,优先使用三元,简洁且效率高
- 练习:获取三个数中的较大数
int num1 = 5,num2 = 7,num3 = 9;
int max = 0; //注意一定要对变量初始化,不然编译错误
max = (num1 > num2)? num1 : num2;
max = (max > num3)? max : num3;
System.out.println("The max num is:" + max); //9 - 三元运算符可以嵌套使用
int num1 = 7,num2 = 7;
String str = (num1 > num2)? "num1大" : (num1 == num2)? "两数相等": "num1小";
System.out.println(str); //两数相等
1.2.6 运算符优先级
- 在使用中建议使用小括号标注优先级
- 只有单目、三元、赋值运算符是从右往左运算的
- 三元运算符可以简化if-else语句
- 三元运算符必须返回一个结果
- if后的代码块可以有多个语句
- 如果程序既可以使用三元,又可以使用if-else,优先使用三元,简洁且效率高
int num1 = 5,num2 = 7,num3 = 9;
int max = 0; //注意一定要对变量初始化,不然编译错误
max = (num1 > num2)? num1 : num2;
max = (max > num3)? max : num3;
System.out.println("The max num is:" + max); //9 int num1 = 7,num2 = 7; String str = (num1 > num2)? "num1大" : (num1 == num2)? "两数相等": "num1小"; System.out.println(str); //两数相等
- 在使用中建议使用小括号标注优先级
- 只有单目、三元、赋值运算符是从右往左运算的



