第二模块
一、运算符
- 算数运算符 网课p63-p64 大约30min
+、-、*、/、%、++、-- 、%
System.out.println(10 % 3); //1
System.out.println(10 % -3);
System.out.println(-10 % 3);
System.out.println(-10 % -3);
%的本质( a % b = a - a / b * b )
++
前++:++i 先自增后赋值
后++:i++ 先赋值后自增
int i = 5;
System.out.println(i++); //5
System.out.println(i); //6
System.out.println(++i); //7
--
前--:--i 先自减后赋值
后--:i-- 先赋值后自减
int i = 5;
System.out.println(i--); //5
System.out.println(i); //4
System.out.println(--i); //3
eg:
int j = 8;
int k = ++j;
System.out.println(k); //9
System.out.println(j); //9
int i = 1;
i = i++;
System.out.println(i); //2
int i = 1;
i = ++i;
System.out.println(i); //2
- 关系运算符 网课p69-p70 大约10min
==、!=、<、>、<=、>=、instanceof
注意:关系运算符的结果都是 boolean 型,true / false
比较运算符"=="不能误写成"="
- 逻辑运算符 网课p70-p73 大约40min 建议多看几遍
&&、&、||、|、!
a&b: & 叫逻辑与:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
a&&b: && 叫短路与:当 a 和 b 同时为 true ,则结果为 true,否则为 false
a|b : | 叫逻辑或:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
a||b : || 叫短路或:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
!a: 叫取反,当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
&和&&的区别
&&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,
&逻辑与:不管第一个条件是否为 false,第二个条件都要判断
&&短路与的效率高,&逻辑与的效率低
||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true
|逻辑或:不管第一个条件是否为 true,第二个条件都要判断
||短路或的效率高,|逻辑或的效率低
eg:
int x = 5; //6
int y = 5; //6
if(x++ == 6 & ++y == 6){
x = 11;
}
System.out.println(“x=”+ x + “y=” + y); //5,5 //6,6
int x = 5;
int y = 5;
if(x++ == 6 && ++y == 6){
x = 11;
}
System.out.println(“x=”+ x + “y=” + y); //6,6 //6,5
int x = 5;
int y = 5;
if(x++ == 5 | ++y == 5){
x = 11;
}
System.out.println(“x=”+ x + “y=” + y); //11,6
int x = 5;
int y = 5;
if(x++ == 5 || ++y == 5){
x = 11;
}
System.out.println(“x=”+ x + “y=” + y); //11,5
boolean x = true;
boolean y = false;
int z = 46;
if((z++ == 46) && (y = true)){ //47
z++; //48
}
if((x = false) || (++z == 49)){ //49
z++; //50
}
System.out.println(z); //50
System.out.println(x); //f
System.out.println(y); //t
- 赋值运算符 网课p76-p77 大约10min
=、+=、-=、*=、/=、%=
复合赋值运算符等价于
a += 3; <=> a = a + 3;
复合赋值运算符会进行类型转化
byte b = 2;
b += 3; //等价于b = (byte)(b + 3)
b++; //等价于 b = (byte)(b + 1)
- 三元运算符 网课p78-p79 大约20min
条件表达式 ? 表达式1 : 表达式2;
如果条件表达式为true,执行表达式1
如果条件表达式为false,执行表达式2
eg:
int a = 10;
int b = 99;
int x = a < b ? a++ : b--;
System.out.println(“x= ” + x); //10
System.out.println(“a= ” + a); //11
System.out.println(“b= ” + b); //99
求两个数的最大值?
求三个数的最大值?
- 进制 网课p87-p97 大约40min
二进制:满2进1,以0b或0B开头表示
eg:0b1010
十进制:满10进1
八进制:满8进1,以数字0开头表示
eg:01010
十六进制:满16进1,以0x或0X开头表示
eg:0x1010
2进制、8进制、16进制转10进制
10进制转2进制、8进制、16进制
8进制、16进制转2进制
2进制转8进制、16进制
注:(2进制从低位到高位,3位代表一个8进制数)
(2进制从低位到高位,4位代表一个16进制数)