zoukankan      html  css  js  c++  java
  • Java基础---第四天

    教课流程:

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

      三元运算符--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();

  • 相关阅读:
    [leetCode]剑指 Offer 62. 圆圈中最后剩下的数字
    [leetCode]剑指 Offer 61. 扑克牌中的顺子
    [leetCode]剑指 Offer 60. n个骰子的点数
    POJ
    POJ
    POJ
    codeforces
    LightOJ
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/zhidianhcuan/p/4338595.html
Copyright © 2011-2022 走看看