算数运算符
// 精度注意点
System.out.printIn(10 / 4) // 2, 因为精度最大的为整数
System.out.printIn(10.0 / 4) // 2.5
double d = 10 / 4
System.out.printIn(d) // 2.0
// 取模注意点
System.out.printIn(10 % 3) // 1
System.out.printIn(-10 % 3) // -1
System.out.printIn(10 % -3) // 1
System.out.printIn(-10 % -3) // -1
关系(比较)运算符
无重点
逻辑运算符
无重点
- 从运算结果看:“&”符号与“&&”效果相同,“|”和“||”效果相同。
- “^”这个是异或,当a和b一个为true,一个为false时候,就为真
- “&”和“&&”的区别,&&如果第一个条件为false,就不会算第二个条件,而&还是会算。开发中通常只用&& &和&&在开发中实际的区别
- “|”和“||”的区别也和“&”和“&&”一样的区别
- “^”异或,当两个条件一个为真一个为假,异或成立
// & 和 && 的区别
int age = 50
int a = 5
// ++a 不执行
if (age > 20 && ++a < 6) {}
// ++a会执行
if (age > 20 & ++a < 6) {}
赋值运算符
注意点
- 复合赋值运算符会进行类型转换
byte b = 3
b = b + 2 // 会报错
b += 2 // 不会报错,会进行类型转换,相当于b = (byte)(b + 2)
// b++, b-- 等也有转换
运算符优先级
不用背,没必要,在写代码中熟悉就行
关键字
关键字不用背,编译器会提示,不用怕会拿关键字作为变量
键盘输入示范使用
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
String name = myScanner.next();
System.out.println(name);
myScanner.close();
}
}
进制转换(高中知识)
A进制转成B进制,数学上的方法是,先把A进制转成成10进制,再把10进制转成B进制。
A进制转成成10进制用乘法,过于简单不做演示。
10进制转成2进制演示
源码补码反码(重点,背下)
位运算符
位运算示范
// 按位与&
System.out.println(2 & 3);
/**
* 1. 先拿到2的源码 00000000 00000000 00000000 00000010
* 2. 拿到2的补码 00000000 00000000 00000000 00000010
* 3. 拿到3的源码 00000000 00000000 00000000 00000011
* 4. 拿到3的补码 00000000 00000000 00000000 00000011
* 5. 按位与&
* 00000000 00000000 00000000 00000010
* 00000000 00000000 00000000 00000011
* 00000000 00000000 00000000 00000010 // 运算后的补码
* 00000000 00000000 00000000 00000010 // 运算后的源码(正数三码合一)
* 结果是2
*/
System.out.println(~-2); // 1
/**
* 推导
* 1. -2的源码: 10000000 00000000 00000000 00000010
* 2. -2的反码: 11111111 11111111 11111111 11111101
* 3. -2的补码: 11111111 11111111 11111111 11111110 // 所有计算都是用补码来计算
* 4. ~-2操作: 00000000 00000000 00000000 00000001 // 运算后的补码
* 5. 运算后的源码:00000000 00000000 00000000 00000001 // 1
*/
System.out.println(~2); // -3
/**
* 推导
* 1. 2的补码: 00000000 00000000 00000000 00000010
* 2. ~2操作: 11111111 11111111 11111111 11111101 // 运算后的补码
* 3. 运算后的反码:11111111 11111111 11111111 11111100 // 补码是负数,变为反码是建1操作
* 4. 运算后源码:10000000 00000000 00000000 00000011 // 反码转换成原码,符号位不变,其余取反
*/
下一章本来是控制结构,但java和JavaScript是一样的,所以跳过