java基础学习_基础语法(上)03_day04总结

============================================================================= =============================================================================

涉及到的知识点有: 1:switch语句(掌握) 2:循环语句(掌握) 3:循环结构(循环嵌套使用) 4:控制跳转语句(掌握)

============================================================================= ============================================================================= 1:switch语句(掌握) (1)格式:     switch(表达式) {       case 值1:         语句体1;         break;       case 值2:         语句体2;         break;       ......         ......       case 值n:         语句体n;         break;       default:         语句体n+1;         break;   //该break可以省略。     } 格式解释说明: switch:说明这是switch语句。 表达式:可以是byte,short,int,char。         JDK5以后表达式可以是枚举。         JDK7以后表达式可以是字符串。 case:后面的值就是要和表达式进行比较的值。 语句体部分:可以是一条或多条语句。 break:表示程序到这里中断,跳出switch语句了。 default:如果所有的情况都不匹配,就执行这里的,相当于if语句中的else。 (2)面试题: switch语句的表达式可以是byte吗?可以是long吗?可以是String吗?       可以,不可以,JDK7以后可以。 (3)执行流程:     A:首先,计算表达式的值;     B:其次,和每一个case的值进行匹配,如果有就执行对应的语句体,看到break就结束。     C:如果没有匹配,就执行default的语句体n+1。 (4)注意事项: A:case后面只能是常量,不能是变量;而且,多个case后面的值不能出现相同的。 B:default可以省略吗?       可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。 特殊情况:         case就可以把值固定(即:判断的值是固定的)。 例如:做单选题:A,B,C,D只有四个选项。 C:break可以省略吗?       default后面的break可以省略。但是其余case后面的break不可以省略,否则出现的结果可能不是我们想要的。 即:会出现一个现象:case穿透。       最终我们建议都不要省略。 D:default一定要在最后吗?       不是,可以在任意位置。但是建议放在最后。因为default表示其它的情况。也即:default不是程序结束的标志。 E:switch语句的两种结束标志:       a:遇到break就表示结束了。       b:如果一直没有遇到break,那就执行到程序的末尾才表示结束了。       特别注意一个情况:如下图所示01:

(5)案例:     A:键盘录入一个数字(1-7),输出对应的星期几。(表达式是byte,int,short的情况)     B:单项选择题。(表达式是char的情况)       //由于我们现在没有办法键盘录入得到一个'A','B','C','D'       //此时需要强制转换为字符类型。       Scanner sc = new Scanner(System.in);       int choiceNumber = sc.nextInt();       char choice = (char) choiceNumber;     C:键盘录入一个字符串的问题。(表达式是字符串的情况)       String s = sc.nextLine();     D:根据给定的月份,输出对应的季节。(可以使用case穿透简化代码)  (6)if语句和switch语句各自的使用场景:  A:if语句       针对boolean类型的判断。       针对一个范围的判断。       针对几个常量的判断。 B:switch语句       针对几个常量的判断。 ----------------------------------------------------------------------------- 2:循环语句(掌握)

(1)有三种:for循环,while循环,do...while循环。 注意:反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环。 --------------------------------------- (2)for循环语句 A:格式:       for(初始化语句;判断条件语句;控制条件语句) {         循环体语句;       } 执行流程: a:执行初始化语句(只做一次); b:执行判断条件语句;           如果这里是true,就继续。           如果这里是false,循环就结束。  c:执行循环体语句; d:执行控制条件语句; e:回到b继续。 B:注意事项: a:判断条件语句无论是简单还是复杂,结果都是boolean类型。 b:循环体语句如果是一条,可以省略大括号,但是不建议省略。 c:一般来说:有分号就没有左大括号,有左大括号就没有分号。 C:案例: a:输出10次HelloWorld。 b:输出1-10的数据。 c:输出10-1的数据。 d:求1-10的和。(循环的求和思想) 如下图所示02:

e:求1-100的和,求1-100的偶数和,求1-100的奇数和。 f:求5的阶乘。         n! = n * (n - 1)!         n! = n * (n - 1) *(n -2) * (n - 3) * ... * 3 * 2 * 1 g:在控制台打印水仙花数。 何为水仙花数?答:一个三位数,其各位数字的立方和等于该数本身。         ge:    153/1%10 = 3         shi:   153/10%10 = 5         bai:   153/100%10 = 1         qian:  x/10000%10         wan:  x/10000%10         ...... 小结:    如果想把某数的个位取出来,就用该数除以1取整后再对10取余;             如果想把某数的十位取出来,就用该数除以10取整后再对10取余;             如果想把某数的百位取出来,就用该数除以100取整后再对10取余;         其余位以此类推。 h:统计水仙花个数。         循环的统计思想。 i:改进版的回文数。         一个五位数:12621         个位 = 万位         十位 = 千位         个位 + 十位 + 千位 + 万位 = 百位 j:统计1-1000之间同时满足如下条件的数据有多少个。         x%3==2         x%5==3         x%7==2 --------------------------------------- (3)while循环 A:基本格式:       while(判断条件语句) {         循环体语句;       }       --------------------------------------- 扩展格式:       初始化语句;       while(判断条件语句) {         循环体语句;         控制条件语句;       }       ---------------------------------------       for(初始化语句;判断条件语句;控制条件语句) {         循环体语句;       }       --------------------------------------- 通过查看这个格式,我们就知道while循环可以和for循环等价转换。 B:while的练习:       把for语句的练习用while改进。  C:for和while的区别: a:使用上的区别:         如果想在循环结束后,继续使用控制条件语句所控制的那个变量,用while循环,否则用for循环。不知道的时候用for循环。         因为变量要及早的从内存中消失,可以提高内存的使用效率。  b:理解上的区别:         for适合于一个范围内的判断。         while适合次数不明确的判断。 举例:吃葡萄。 D:案例: a:珠穆朗玛峰问题。(不知道次数用while) b:小芳存钱问题(break以后才能做)。 --------------------------------------- (4)do...while循环 A:基本格式:       do {         循环体语句;       }while(判断条件语句);       --------------------------------------- 扩展格式:       初始化语句;       do {         循环体语句;         控制条件语句;       }while(判断条件语句);       ---------------------------------------       for(初始化语句;判断条件语句;控制条件语句) {         循环体语句;       }       ---------------------------------------       通过查看格式,我们就可以看出其实三种循环的格式可以是统一的。 B:三种循环的区别: a:do...while循环至少执行一次循环体。  b:for和while必须先判断条件是否是true,然后才能决定是否执行循环体。 c:我们一般优先考虑for,其次考虑while,最后考虑do...while。 --------------------------------------- (5)循环使用的注意事项(死循环) A:一定要注意修改控制条件语句,否则容易出现死循环。 B:最简单的死循环格式:       a:while(true){...}       b:for(;;){...} ----------------------------------------------------------------------------- 3:循环结构(循环嵌套使用) 循环嵌套:循环语句的循环体本身就是一个循环语句。 (1)请输出一个4行5列的星星(*)图案.     *****     *****     *****     *****     for (int x = 0; x < 4; x++) { //外循环控制行数。       for (int y = 0; y < 5; y++) { //内循环控制列数。         System.out.print("*");       }       System.out.println();     }  (2)请输出如下图形.     *     **     ***     ****     *****   for (int x = 0; x < 5; x++) { //外循环控制行数。     for (int y = 0; y <= x; y++) { //内循环控制列数。       System.out.print("*");     }     System.out.println();   } (3)在控制台输出九九乘法表。     *     **     ***     ****     *****     ******     *******     ********     *********     for (int x = 0; x < 9; x++) { //外循环控制行数。       for (int y = 0; y <= x; y++) { //内循环控制列数。         System.out.print("*");       }       System.out.println();     } ---------------------------------------     1*1=1     1*2=2   2*2=4     1*3=3   2*3=6   3*3=9     1*4=4   2*4=8   3*4=12   4*4=16     ... ... ... ... ...     1*9=9   2*9=18    3*9=27   4*9=36 ...     for (int x = 1; x <= 9; x++) { //外循环控制行数。       for (int y = 1; y <= x; y++) { //内循环控制列数。         System.out.print(y+"*"+x+"="+y*x+"\t");       }       System.out.println();     } (4)注意事项:     '\x'    x表示任意,这种做法叫转移字符。     '\t'    tab键的位置     '\r'   回车(回到旧行的开端)     '\n'     换行(换到新行的开端) ----------------------------------------------------------------------------- 4:控制跳转语句(掌握) (1)break:中断的意思 A:用在循环(loop)语句中加入了if判断的情况和switch语句中,离开此应用场景无意义。 B:作用: a:跳出单层循环。 b:跳出多层循环,需要与标签语句的配合。即给循环起个名字。但是呢,几乎不用,跳出多层循环。应用:break配合标签使用,可以通过内循环控制外循环。 格式:标签名:语句 例如:         wc:for(int x = 0; x < 3; x++) {           nc:for(int y = 0; y < 4; y++) {             if(y == 2) {               //break nc;               break wc;             }             System.out.print("*");           }           System.out.println();         } --------------------------------------- (2)continue:继续的意思 A:用在循环中,离开此应用场景无意义。 B:作用:       break:跳出单层循环,循环结束,不在继续下去了。       continue:跳出一次单层循环,但循环没有结束,继续下一次循环。特别注意:在while循环的循环体中使用continue,可能使程序停不下来。 C:填空题 (1)     for(int x = 1; x < 10; x++) {       if(x == 3) {         //break;   //1 2         continue;     //1 2 4 5 6 7 8 9       }       System.out.println(x);     } (2)     for(int x = 1; x <= 10; x++) {       if(x%3 == 0) {         //在此处填写代码       }       System.out.println(“Java基础班”);     } 如何让控制台输出2次:Java基础班       break; 如何让控制台输出7次:Java基础班       continue; 如何让控制台输出13次:Java基础班       System.out.println(“Java基础班”); --------------------------------------- (3)return:返回的意思     return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。 A:用于结束方法的,后面还会在继续讲解和使用。 B:一旦遇到return,程序就不会在继续往后执行。 --------------------------------------- (4)用while语句和break结合使用:小芳存钱案例。

 1 /*
 2     需求:小芳的妈妈每天给她2.5元钱,她都会存起来,但是,
 3         每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,
 4         请问,经过多少天,小芳才可以存到100元钱。
 5     分析:
 6         A:小芳的妈妈每天给她2.5元钱。
 7             double dayMoney = 2.5;
 8         B:她都会存起来
 9             double daySum = 0;
10         C:从第一天开始存储。
11             int dayCount = 1;
12         D:经过多少天,小芳才可以存到100元钱。
13             double result = 100;
14         E:这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,
15             说明要判断dayCount的值,如果对5整除就减去6元钱。
16                 daySum -= 6;
17             由此还隐含了一个问题,就是要判断dayCount的值,如果不是5的倍数天的话,钱要累加。
18                 daySum += dayMoney;
19         F:因为不知道是多少天,所以我用死循环,一旦超过100元我就退出循环。
20 */
21 class WhileDemo {
22     public static void main(String[] args) {
23         //每天要存储的钱是2.5元
24         double dayMoney = 2.5;
25             
26         //存钱的初始化值是0
27         double daySum = 0;
28             
29         //从第一天开始存储
30         int dayCount = 1;
31             
32         //最终存储不小于100就不存储了
33         int result = 100;
34             
35         //因为不知道是多少天,所以我用死循环,
36         while(true) {
37             //累加钱
38             daySum += dayMoney;
39                 
40             //一旦超过100元我就退出循环。
41             if(daySum >= result) {
42                 System.out.println("共花了"+dayCount+"天存储了100元");
43                 break;
44             }
45                 
46             if(dayCount%5 == 0) {
47                 //花去6元钱
48                 daySum -= 6;
49                 System.out.println("第"+dayCount+"天花了6元钱");
50             }
51                 
52             //天数变化
53             dayCount++;
54         }
55     }
56 }    

=============================================================================

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Script Boy (CN-SIMO)

Qt Quick编程(1)——QML的核心部分ECMAScript

说道QML,不得不先说一下ECMAScript: ECMAScript语言的标准是由Netscape、Sun、微软、Borland等公司基于JavaScript...

4420
来自专栏程序员与猫

常见的正则表达式解读释义

又名:写给正在学习前端的女友看的常见正则表达式解读。原文发布于 https://www.zybuluo.com/wddpct/note/728081 。 ...

2079
来自专栏从流域到海域

Python set(集合) 这一定是最全的介绍集合的博文

Python的set是一个无序且无重复元素的集合,概念上相当于数学上的无序集,数据结构上相当于dict的键。 既然set是集合,则必然可以实现并、交、...

2215
来自专栏Micro_awake web

JavaScript(四):运算符&数据类型转换

+:算符的加法;连接字符串 加法会将其它类型的值,自动转为字符串,然后再进行连接运算! 1 var a=1+2; 2 console.log('first:...

1956
来自专栏ml

c语言格式大整理

1、C语言中,非零值为真,真用1表示;零值为假,假用0表示。 2、转义字符参考: \a 蜂鸣,响铃  \b 回退:向后退一格 ...

5317
来自专栏企鹅号快讯

轻松学习 JavaScript(8):JavaScript 中的类

英文: Dhananjay Kumar 译文:码农网/小峰 www.codeceo.com/article/easy-javascript-08-class...

1968
来自专栏技术/开源

从C#到TypeScript - 变量

从C#到TypeScript - 变量 TypeScript的变量声明和ES6差不多,相比之前主要是多了let和const 为什么不用var 不管是TypeSc...

1846
来自专栏Golang语言社区

Go语言interface详解

interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计...

3699
来自专栏hbbliyong

Python正则进阶

  返回一个列表,如果正则表达式中没有分组,则列表中包含的是所有匹配的内容,如果正则表达式中有分组,则列表中的每个元素是一个元组,元组中包含子分组中匹配到的内容...

1293
来自专栏HTML5学堂

获取对象具体类型的功能函数

HTML5学堂:JavaScript当中,时常会使用到typeof来进行数据类型的检测,但是我们觉得typeof不能够满足我们的需求,对于数组、函数、时间对象等...

3267

扫码关注云+社区

领取腾讯云代金券