本帖最后由 lizihanglove 于 2016-6-27 00:05 编辑
第三天笔记总结,发帖望多多关照
Day3
一、运算符
1、 逻辑(关系)运算符
// 与:&,或:|,异或:^,非:!
A、 逻辑与:并且、and,遇见false即为false。(串联)
B、 逻辑或:或者、or,遇见true即为true。(并联)
C、 逻辑异或:左右结果相同,最后结果为false; 左右结果不同,最后结果为true
D、 逻辑非:不true为false;不false为true。
短路与(&&)和与(&)的异同:
A、 同:结果是一样的
B、 异:短路与(&&)中,出现false在左,结果为false,并且不再执行右边部分。因此效率更高
短路或(||)和或(|)的异同:
C、 同:结果是一样的
D、 异:短路或(||)中,出现true在左,结果为true,并且不再执行右边部分。因此效率更高
2、 位运算符
//位与:&,位或:|,位异或:^,位取反:~
A、 位与(&):遇零则零
B、 位或(|):遇一则一
注意:异或的特性:一个数被同一个数同时异或的结果是其本身。
实现两个整数变量的互换的多种方法(面试题)
i. 含第三方变量: (开发常用)
Int a = 1;
Int b = 2;
Int temp = a;
a = b;
b = temp;
ii. 不含第三方变量: (1)
Int a = 1;
Int b = 2;
a = a + b;
b = a – b;
a = a –b;
(2)
Int a = 1;
Int b = 2;
a = a^b;
b = a^b;
a = a ^b;
注意:(1 & 2) 与((1 == 2)&(2 == 3))的区别:前者是位运算(位与),后者是逻辑运算(逻辑与),所得的结果是不同的数据类型。
D、 位异或(^):相同则零,不同则一
E、 位取反(~):(~6 = -7)
F、 位左移<<:X<<N = X * (2 ^ N) G、 位右移>>:X>>N= X / (2^N) H、 位无符号右移:>>>:
实现高效率算出2*8的结果(面试题)
2 << 3= 8
-2<<3 = -8
3、 三元运算符
A、 格式: (关系表达式)? 判断结果表达式一:判断结果表达式二;
B、 使用: i. 判相同: (a == b)? true : false;
ii. 比大小: (((a>b) ? a:b) >c)? ((a>b) ? a: b):c;
或
(a>b)?((a>c)?a:c):((b>c)?b: c) (推荐)
二、Scanner的使用
格式:
A、 导包:importjava.util.*; B、 创建键盘录入对象:Scannerinput = new Scaner(System.in); C、 通过对象获取数据:intx = input.nextInt(); 三、流程控制
1、 分类:选择、顺序、循环
2、 选择:
A、 if:单分支结构
格式:
If(比较语句){//比较语句只可以为true 或者false
执行语句;
}
注意:若if只有一条语句,则大括号可以省略,但建议永远不要省略。
B、 if-else:双分支结构
格式:
If(比较语句){
结果表达式1;
}else{
结果表达式2;
}
选择结构与三元运算符的区别:
选择结构中存在输出语句时,不能使用三元运算符;
If是万能的,三元更简单。
C、 if-else if - else if – else:多分支结构
格式:
if(){
}if else(){
}if else(){
}
……
else{}
注意:else if 包含其他条件的对立面。
D、 if-else嵌套
格式:
if(){
if(){
}else{
}
}else{
if(){
}else{
}
}
E、 switch结构:
格式:
Switch(表达式){ //byte short char int
//jdk 1.5:枚举类型;jdk 1.7: String
case 常量值1:
语句体1;break;
case 常量值2:
语句2;break ;
……
default:语句n+1; break ;
}
注意:如果没有使用break语句,会出现“贯穿”现象,但最后一个break可以省略。
F、 switch与if的使用场景:
if通常使用在范围、区间时;switch通常使用在固定值时。If是万能的,switch是简单的。
注意:if语句中,将大范围放在前面,可以优化程序。
|