教课流程:

  位运算符:两个整数型数据交换位置--中间变量、位异或运算[ ^ ]

  三元运算符--if语句【数据键盘录入】

  switch语句

总结: 

1:运算符

         (1)位运算符

                   ^ : 一个数据对同一个数据^两次,结果还是数据本身。[异或]

                   举例:a ^ b ^ b = a

         (2)条件运算符

                   格式:

                            条件表达式?表达式1:表达式2

                            执行流程:

                                     根据条件表达式返回的是true还是false,决定结果是什么。

                                     如果是true,就把表达式1作为结果。

                                     如果是false,就把表达式2作为结果。

                   举例:

                            int a = 100;

                            int b = a > 50 ? 200 : 100;

                            请问b的值?200

2:面试题

         (1)请用最有效率的代码写出2乘以8

                   2<<3  //位运算

         (2)请交换两个变量。

                   int a = 10;

                   int b = 20;

                   开发:临时变量

                            int temp = a;

                            a = b;

                            b = temp;

                   面试:位^运算符

                            a = a ^ b;

                            b = a ^ b;

                            a = a ^ b;

3:if语句

         (1)用于做判断使用的。

            常见于对某个范围进行判断,或者几个变量进行判断,还有就是boolean表达式的判断。

         (2)格式:

         A:第一种格式

                   if(条件表达式)

                   {

                            语句体;

                   }

                   执行流程:

                            如果条件表达式为true,就执行语句体;

                            否则,什么都不执行。

   B:第二种格式

           if(条件表达式)

           {

                     语句体1;

           }

           else

           {

                     语句体2;

           }

 

           执行流程:

                     如果条件表达式为true,就执行语句体1;

                     否则,就执行语句体2; 

           特殊:

                     可以和条件表达式在某些情况下进行替换。

                     一般是在赋值的情况下可以。

           举例:

                     获取两个数中的最大值。

       int a = 10,b = 15,c = 23;

       int max = (a>b)?((a>c)?a:c):((b>c)?b:c);

  C:第三种格式

           if(条件表达式1)      //条件表达式1和条件表达式2等没有严格的关系,范围的表达式建议书写完整

           {

                   语句体1;

           }

           else if(条件表达式2)

           {

                   语句体2;

           }

           ...

           else

           {

                   语句体n;

           }       

           执行流程:

                   如果条件表达式1为true,就执行语句体1;

                   如果条件表达式2为true,就执行语句体2;

                   ...

                   否则,就执行语句体n;              

  D:注意事项

           a:什么时候时候哪一种if语句。

                   第一种格式在判断条件为一种情况下使用。

                   第二种格式在判断条件为两种情况下使用。

                   第三种格式在判断条件为多种情况下使用。

           b:每一种if语句其实都是一个整体,如果有地方执行了, 其他的就不执行了。

           c:如果if或者else里面控制的语句体是一条语句,是可以省略大括号的,但是,如果是控制多条语句,就必须写上大括号。

             建议:永远写上大括号。

           d:大括号和分号一般不同时出现。

  E:作用域

           所有变量的定义只在它所属的大括号内有效。

           (3)案例:

                   A:根据键盘录入的成绩,判断等级。

                   B:根据键盘录入的月份,输出该月份所对应的季节。

4:switch语句

(1)用于做选择使用的。一般用于几个常量的判断。

         switch会把几个常量值直接加载到内存,在判断的时候,效率要比if高。

         所以,针对几个常量的判断,一般选择switch语句。

(2)switch语句的格式:

         switch(表达式)

         {

                   case 值1:

                            语句体1;    //语句体可以是多条语句,不用加括号

                            break;

                   case 值2:

                            语句体2;

                            break;

                   case 值3:

                            语句体3;

                            break;

                   ...

                   default:

                            语句体n;

                            break;      

         }

                   A:针对格式的解释

                            switch:表示这里使用的是switch语句,后面跟的是选项。

                                     表达式:byte,short,int,char

                                             JDK5以后可以是枚举

                                               JDK7以后可以是字符串

                            case:表示这里就是选项的值,它后面的值将来和表达式的值进行匹配。

                                 case后面的值是不能够重复的。

                            break:

                                     switch语句执行到这里,就结束了。

                            default:

                                     当所有的case和表达式都不匹配的时候,就走default的内容。

                                     它相当于if语句的else。一般不建议省略。

                   B:执行流程

                            进入switch语句后,就会根据表达式的值去找对应的case值。

                            如果最终没有找到,那么,就执行default的内容。        

                   C:注意事项:

                            a:default整体可以省略吗?

                                     可以,但是不建议。

                            b:default的位置可以放到前面吗?

                                     可以,但是不建议。

                            c:break可以省略吗?

                                     可以,但是不建议。

                                     default在最后,break是可以省略的。

                                     case后面的break可以省略,但是结果可能有问题。

                            d:switch语句什么时候结束呢?

                                     就是遇到break或者执行到程序的末尾。

         (3)案例:

                   A:根据键盘录入的日期(1-7),输出对应的星期日期。

 1 /**
 2     需求:根据输入数据,判断星期
 3 */
 4 import java.util.Scanner;
 5 class DataDemo
 6 {
 7     public static void main(String[] args)
 8     {
 9         Scanner sc = new Scanner(System.in);
10         System.out.println("请输入待查询的数字1——7:");
11         int data = sc.nextInt();
12 
13         if(data>7 ||data<0)
14         {
15             System.out.println("输入错误数字,请重新输入!");
16             data = sc.nextInt();
17         }
18         switch(data)
19         {
20             case 1:
21                 System.out.println("星期一");
22                 break;
23             case 2:
24                 System.out.println("星期二");
25                 break;
26             case 3:
27                 System.out.println("星期三");
28                 break;
29             case 4:
30                 System.out.println("星期四");
31                 break;
32             case 5:
33                 System.out.println("星期五");
34                 break;
35             case 6:
36                 System.out.println("星期六");
37                 break;
38             case 7:
39                 System.out.println("星期天");
40                 break;
         //
         /*
41 default://此处default完全没有必要,在switch语句前,已经对输入数据进行了处理。 42 System.out.println("输入错误数字!"); 43 break;
         //*/
44 } 45 46 switch(data) 47 { 48 case 1: 49 case 2: 50 case 3: 51 case 4: 52 case 5://多个case公用同一段代码,可以一起使用 53 System.out.println("工作日"); 54 break; 55 case 6: 56 case 7: 57 System.out.println("周末"); 58 break; 59 } 60 61 } 62 }

                   B:根据键盘录入的月份,输出该月份所对应的季节。

 1 /**
 2     功能需求:
 3     请根据给定的月份,输出对应的季节。
 4 
 5     春:3,4,5
 6     夏:6,7,8
 7     秋:9,10,11
 8     冬:1,2,12
 9 
10     键盘输入:
11         三种方式:String[]接受参数,标准输入输出流IO,Scanner
12     Scanner的使用:
13         1、导入包:import java.util.Scanner;
14         2、创建Scanner对象:Scanner sc = new Scanner(System.in);
15         3、调用对象方法,获取键盘输入int型数据:
16         int month = sc.nextInt();
17 */
18 
19 import java.util.Scanner;
20 //导入包
21 class  IfDemo
22 {
23     public static void main(String[] args) 
24     {
25         //创建Scanner对象
26         Scanner sc = new Scanner(System.in);
27         System.out.println("请输入月份1-12:");
28         //调用Scanner对象方法,获取输入数据
29         int month = sc.nextInt();
30         
31         if(month >=3 && month <6)
32         {
33             System.out.println(month+"月是春季  ~_~");
34         }
35         else if(month >=6 && month <9)
36         {
37             System.out.println(month+"月是夏季  ~_~");
38         }
39         else if(month >=9 && month <11)
40         {
41             System.out.println(month+"月是秋季  ~_~");
42         }            //12月是一个特例,大小比较不好放置
43         else if(month >=1 && month <3 || month ==12)
44         {
45             System.out.println(month+"月是冬季  ~_~");
46         }
47         else
48         {
49             System.out.println("输入错误季节 ~_~");
50         }
51 
52 
53         //因为月份相对较少,可以使用逐个列举的方式
54     }
55 }
56 
57 
58 /*
59 总结:
60     当前程序主要三个考虑点:
61     1,if语句的使用,尤其是第三种的嵌套;
62     2,Scanner类实现键盘响应;
63     3,程序安全性的考虑,12月的放置,以及输入错误数据的考量。
64 */

 

5:Scanner的使用

         (1)Scanner是JDK5以后设计的用来接收键盘录入数据使用的。

         (2)目前我们要通过键盘录入int类型数据,必须按照如下步骤:

                   A:导包

                            import java.util.Scanner;

                   B:创建对象,封装键盘录入

                            Scanner sc = new Scanner(System.in);

                   C:调用方法,获取数据

                            int number = sc.nextInt();