一、算术运算符
1、整数运算
byte a = 1;
int b = 2;
long c = 3;
long f = c+a;
int m = a+b;
int + byte = int 有long结果为long
long + int = long 无long结果为int
2、取余运算
//取余 余数部分符号与第一个数相同
long c = -10;
long m = c % -4;
long f = 8;
long n = f % 4;
// a++与++a的区分
二、赋值及其扩展赋值运算符
int a = 1;
int b = 2;
a += b; //a = a+b
a %= b; //a = a%b
a /= b; //a = a/b
a *= b; //a = a*b
三、逻辑运算符
逻辑与短路的区别:逻辑两边数据都判断才给结果;短路从左到右,左边符合要求不管右边是否正确就直接返回true或false
四、位运算符
用二进制法运算:
int a = 4;
int b = 3;
System.out.println(a|b); //7
System.out.println(a&b); // 0
System.out.println(a^b); // 7
System.out.println(~a); // -5(?)
System.out.println(a<<2); // 16,左移两位 a*2*2 == 16
System.out.println(a>>2); // 1,右移两位,a/2/2
五、字符串连接符
+ 可以将int变成String拼接
int a = 4;
String b = "3";
int c = 5;
char d = 'a';
System.out.println(a+b); // 43
System.out.println(a+b+c) // 435
System.out.println(a+c+b) //93
System.out.println(d+a) //a的ascll码97 + 4 = 101
六、条件运算符
x ? y : z 若x为true,结果为y;若x为false,结果为z
int score = 4;
int x = -100;
String type = score<60?"不及格":"及格";
int flag = x > 0? 1:(x == 0?0:-1);
System.out.println("type="+type);
System.out.println("flag="+flag);
七、 运算符优先级问题
逻辑非>逻辑与>逻辑或
a||b&&c的运算结果是:a||(b&&c),而不是(a||b)&&c
八、自动类型转换
范围小的可以赋值给范围大的,上图上虚线可能会出现精度不准确等情况
int a = 4;
long c = a;
double d = c;
long e = d; //double不能放在long类型里
byte b = a; //int类型不能赋值给byte类型
九、强制类型转换
遵从小范围类型赋值给大范围类型
不能在布尔类型和任何数值类型之间做强制类型转换
double c = 97.4444;
int d = (char)c+1;
int cd = (int)c; //精度不准确为97
char f = (char)c;
System.out.println(f); // a
System.out.println(d); // 98
十、基本类型溢出问题
int a = 10000000000;
int b = 99;
int c = a*b; //最后放在int类型溢出
long d = a*b; //前面a已经溢出来,最后用long接收仍会报错
long e = (long)a*b; //正确,先把一个强制转化为long最后出来的数值为long
long f = 10000000000L*99; //正确
十一、 简单的键盘输入和输出
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的名字:");
String name = scanner.nextLine(); //用String接收
System.out.println("请输入你的年龄:");
int age = scanner.nextInt(); //用int接收
System.out.println("your name is "+name);
System.out.println("your age is "+age);