写点什么

JAVA 笔记 (四)-- 三大结构语句

用户头像
加百利
关注
发布于: 2021 年 06 月 17 日

1.选择结构 if:

a.why: 在实际生活中,有些场合需要满足一定条件才能继续往下进行?


b.语法:


if(条件){   //条件是  boolean  或者  boolean结果的表达式  执行代码;}
复制代码


c.eg:


@Test     public void TestA(){        //1. 简单的if条件结构        int a =10;        int b =5;        if(a>b){  //()括号里面放入的是关系表达式或者逻辑表达式            System.out.println("a的值比b的值大!");        }    }
复制代码

2、选择结构 if...else...

if(条件){ //条件是 boolean 或者boolean结果的表达式,如果条件为true执行代码1,如果为false,执行代码2;    执行代码1;}else{    执行代码2;}
复制代码


@Test    public void TestB(){        //2. if...else条件结构        int a =10;        int b =15;        if(a>b){            System.out.println("a的值比b的值大!");        }else{            System.out.println("a的值比b的值小!");        }    }
复制代码

3、练习

问题 1:分段的条件如何实现?优、良、中、及格 ?


多重选择结构 if...else


a.why:


​ 在实际生活中,有些场合满足一定范围条件进行相关操作,满足其他范围进行其他操作?


b.语法:


if(条件1){    执行代码1}else if(条件2){    执行代码2}...else{    最终执行代码}
复制代码


@Test    public void TestC(){        //3. if..else if if...else if  else        //多重if结构 分区间问题        int score = 89;  //定义某一个学生分数        if(score>=90){            System.out.println("成绩优秀!");        }else if(score>=80){            System.out.println("成绩良好!");        }else if(score>=70){            System.out.println("成绩良好!");        }else if(score>=60){            System.out.println("成绩合格!");        }else {            System.out.println("成绩不合格!");        }    }}
复制代码


条件: 是 boolean 或者 boolean 结果的表达式,如果满足条件 1 执行代码 1,满足条件 N 执行代码 N,else 中可以省略。


重点: 多重条件选择注意区间段的书写


问题 2:在判定一定条件的时候,需要提前对数据进行判定处理?

4.嵌套选择结构:

a.why: 在实际生活中,我们有些判定需要放入到其他的判定内部,有着先后顺序?


b.语法:


if(条件1){    if(条件1.1){        }else{        }}else{
}
复制代码


条件:是 boolean 或者 boolean 结果的表达式,内容同基本选择机构一致

5、switch 选择结构:

问题: 是否有其他的选择结构?如果条件特别多,并且条件不是范围而是固定值?


a.why:


在实际生活中,有些场合需要使用多重选择结构,并且多重选择结构中的条件是确定值,确定值判定有很多?


b.语法:


switch(表达式){    case 常量1:        执行代码1;        break;    case 常量2:        执行代码2;        break;    ...    default:        执行代码;        break;}
复制代码


表达式可以是 byte,short,int,char,Enum(枚举),JDK1.7 以前不能使用 String,1.7 及 1.7 以后可以使用 String


**重点:**g,float,double 是不能使用的表达式类型


break 和 default 模块可以省略不写;


break 表示结束判定,如果省略了会继续执行之后的指令,省略需谨慎;


常量后的":"是不允许省略的;


default 模块可以放置在前方


注意执行顺序和 break 的结合使用的问题


**重点:**switch 和 if 比较:


相同点:

  • 都是多分支比较结构

不同点:

  • switch 只用于等值判定条件;

  • if 没有条件限制,但是一般用于区间判定


c.举例说明


eg:输入月份,根据月份输出该月份的天数


eg:综合例子:输入年份,月份,分别将该年月的天数输出


eg:


public static void main(String[] args) {    int a = 2;    switch(a){        case 1:            System.out.println("周一");            break;        case 2:            System.out.println("周二");            break;        case 3:            System.out.println("周三");            break;        default:            System.out.println("超出范围");    }}
复制代码


输出结果:周二


注意:switch 语句也是可以支持嵌套的。

6、while 循环结构

a.why: 在实际生活中,一些重复冗余的操作--如何优化?


b.语法:


初始值int i=1;while(条件i<=100){    执行代码;    迭代条件i++;}
复制代码


 public static void main(String[] args) {         int a = 1;          // 定义用来计数的变量         double sum = 10000; //定义一个 存放本金的变量         while (a <= 5) {    //计算5 年后的本金             sum += sum * 0.003;         a++;      }  System.out.println(sum);}
复制代码


初始值,循环条件,循环内容,迭代条件

7、debug 调试:

最基本的操作是:


  1. 首先在一个 java 文件中设断点,然后 debug as-->open debug Dialog,然后在对话框中选类后--> Run 当程序走到断点处就会转到 debug 视图下。

  2. F5 键与 F6 键均为单步调试,F5 是 step into,也就是进入本行代码中执行,F6 是 step over,也就是执行本行代码,跳到下一行,

  3. F7 是跳出函数

  4. F8 是执行到最后。


  1. Step Into (also F5) 跳入

  2. Step Over (also F6) 跳过

  3. Step Return (also F7) 执行完当前 method,然后 return 跳出此 method

  4. step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置 Filter:window-preferences-java-Debug-step Filtering)

  5. resume 重新开始执行 debug,一直运行直到遇到 breakpoint

  6. hit count 设置执行次数 适合程序中的 for 循环(设置 breakpoint view-右键 hit count)

  7. inspect 检查 运算。执行一个表达式显示执行值

  8. watch 实时地监视变量的变化

  9. 我们常说的断点(breakpoints)是指 line breakpoints,除了 line breakpoints,还有其他的断点类型:field(watchpoint)breakpoint,method breakpoint,exception breakpoint.

  10. field breakpoint 也叫 watchpoint(监视点) 当成员变量被读取或修改时暂挂

  11. 添加 method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)

  12. 添加 Exception breakpoint 捕抓到 Execption 时暂挂(待续...)

  13. variables 视图里的变量可以改变变量值,在 variables 视图选择变量点击右键--change value.一次来进行快速调试。

  14. debug 过程中修改了某些 code 后--〉save&build-->resume-->重新暂挂于断点


断点属性:


  1. hit count 执行多少次数后暂挂 用于循环

  2. enable condition 遇到符合你输入条件(为 ture\改变时)就暂挂

  3. suspend thread 多线程时暂挂此线程

  4. suspend VM 暂挂虚拟机

8、do...while 循环

a.why:


实际操作中,需要先执行了以后再进行判定是否需要继续?


b.语法:


初始值


do{    重复执行代码;    迭代内容;}while(循环判定条件);
复制代码


public static void main(String[] args) {    int i = 1;// 初始化语句    do {        System.out.println("我想看,复仇者联盟4");// 循环体        i++;// 步进语句    } while (i <= 10);// 条件判断}
复制代码


重点: 最后的分号一定不要省略

while 与 do...while 循环总结:

  • 相同点:都是循环结构; 内容都是含有四个部分:初始值,循环条件,循环内容,迭代条件;

  • 区别:语法不同; 执行顺序不同:while 先判定再执行,do...while 先执行再判定; 执行次数:while 执行是 0 或多次;do...while 执行是 1 或多次;

9、循环结构 for:

a.why: 解决实际问题中重复操作


b.语法:


for(表达式1;表达式2;表达式3){    执行代码4;}
复制代码


表达式 1 为循环参数的初始值;表达式 2 为循环判定(结束)条件;表达式 3 为循环迭代条件执行代码为需要重复的操作执行的顺序:1-2-4-3-1-2-4-3...


10、for 循环变形:

a.for(){};


​初始值等含有多个同时操作


b. 正常执行:


int i=0;for(;i<10;i++){    执行代码}
复制代码


初始变量放在外部,不再做一个 for 循环的局部变量;


c. 死循环


for(int i=0;;i++){    执行代码;}
复制代码


​ 语法没有问题,但是缺少结束条件,死循环


​ 语法没有问题,但是缺少迭代条件,死循环;


for(int i=0;;){}for(;;)
复制代码


public static void main(String[] args){        int run = 1;        for(;run<=5;run++){            System.out.println("跑第: " + run + "次");        }        System.out.println("run: "+run);}
复制代码


重点: for、if 结构中如果只有一行指令的时候可以省略{},但是建议大家不要省略;

11.break:

​ 在循环体中表示结束整个循环,一般同判定结合使用;

12.continue:

​ 在循环体中表示结束当前层循环,进入下一层循环;

13.return:

​ 结束方法体;

14.break、continue、return 比较:

使用场合


break常用于switch结构和循环结构中


continue一般用于循环结构中


作用(循环结构中)


break语句终止某个循环,程序跳转到循环块外的下一条语句continue跳出本次循环,进入下一次循环return:结束当前方法的执行并退出,返回到调用该方法的语句处
复制代码

15、循环总结:(while,do...while,for)

相同点:


需要多次重复执行一个或多个任务的问题考虑使用循环来解决; 无论哪一种循环结构,都有 4 个必不可少的部分:初始部分、循环条件、循环体、迭代部分


区别:


语法;

执行顺序:

while 循环:先判断,再执行

do-while 循环:先执行,再判断

for 循环:先判断,再执行


适用场合:


循环次数确定的情况,通常选用 for 循环

循环次数不确定的情况,通常选用 while 或 do-while 循环

知识点补充:

1、Math.random()获取随机数字

范围是0.0 <= Math.random() < 1.0


int randow = (int)(Math.randow()*10);
复制代码


重点:Math 的 API 使用


2、转义字符:
\ 转义符号    \n 表示在字符串中回车\t Tab效果\r\n IO流需要在文本中换行,需要使用特殊处理\\ 转义字符本身
复制代码


练习题


1、有 1020 个西瓜,第一天卖掉总数的一半后又多卖出两个,以后每天卖剩下的一半多两个,问几天以后能卖完?


2、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃了一半,又多吃一个,以后每天都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子。求第一天共摘了多少个?


3、有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第 3 个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12 个月)能繁殖成多少对?分析:兔子的规律为数列,1,1,2,3,5,8,13,21


4、任意输入一个整数(小于 10 位),输出它一共有多少位。


5、计算 1000 以内所有不能被 7 整除的整数之和


6、本金 10000 元存入银行,年利率是千分之三,每过 1 年,将本金和利息相加作为新的本金。计算 5 年后,获得的本金是


7、计算 1+2-3+4-5+6-7…+100 的结果//注意审题


8、一张纸的厚度大约是 0.08mm,对折多少次之后能达到或超过珠穆朗玛峰的高度(8848.13 米)


9、从控制台输入一个正整数,计算该数的阶乘。例如输入 5,阶乘为 54321


10、你的程序要读入一系列正整数数据,输入-1 表示输入结束,-1 本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数




用户头像

加百利

关注

还未添加个人签名 2021.06.08 加入

还未添加个人简介

评论

发布
暂无评论
JAVA笔记(四)--三大结构语句