黑马程序员技术交流社区

标题: Java基础学习第三天笔记总结 [打印本页]

作者: lizihanglove    时间: 2016-6-27 00:02
标题: Java基础学习第三天笔记总结
本帖最后由 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语句中,将大范围放在前面,可以优化程序。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2