java学习记录(三):java的逻辑选择和循环体的使用

本文深入讲解Java中的控制流程,包括if...else判断语句、switch选择语句、while、do...while及for循环语句的使用技巧。同时,介绍了break、continue和return跳转语句的应用场景,并通过实例演示质数查找,全面覆盖Java流程控制的核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本课内容重点讲述如下内容

  • if判断语句
  • switch选择语句
  • 循环语句,while,do while ,for
  • 跳转语句 break语句、continue语句和return语句
  • 组合训练

程序的本质是顺序执行功能,善用流程控制手法可以使得程序得到简化,更方便进行管理,理解程序的运行方式,这部分同样是必须掌握的知识。

if判断语句

if判断语句是一种条件判断语句,一共有2个核心部分和1个可以选择是否使用部分

if(a==5){      //核心部分1,小括号内的逻辑判断语句
	a=a+b;	  //核心部分2,大括号内包含的可执行语句
}else {
	a=a-b;    //可选择部分,大括号内包含的可执行语句
}

核心部分1里小括号内的数值计算为真后,java就会执行核心部分2的内容,否则就会执行else 后面跟随的代码块的内容,如果没有需要执行的内容,那么这部分可以不写。
文字描述就是这样的效果

if(判断)
   真则运行的语句;
else
	否则运行的语句;

逻辑上描述为
如果 if后括号内判断为真
则执行后面的一个语句
否则查看后面是否有else
有则执行else后跟的一个语句,没有则跳过。
(因为大括号整体可以被视为一个代码块,对外表现则等同于一个语句,因此从大括号包含就可以一次多执行一些语句,并且在只有单条需要执行语句时候可以省略大括号
此外else 语句的规则为,跟随上方最近的if语句,比如:

if(a==1)
if(b==1)
a++;
else
b++
else
a=a+b;

对于这样编写的代码,其对应缩进关系为

if(a==1){
	if(b==1)
		a++;
	else
		b++
}else
	a=a+b;

if语句和else语句还能构成组合语句 else if
但是本质上还是else 后跟随了一个 if组成的代码块
代码示例:

public class m_hellow {
	public static void main(String ards[])
	{
		int a=10;
		int b=9;
		if(a==5){    
			a=a+b;
		}else if(a>5){
			a=a-b;
		}else {
	a=b;
}
		System.out.printf("if test1 a=%d",a);
	}
}

运行结果:
if test1 a=1
用法总结:

  1. if语句建议善用缩进格式和大括号进行排版
  2. 用if –else 组合语句时候注意else始终跟随最近的if如果想要对于跟前一个if则需要用大括号使得上一个if语句独立
  3. 如果用if else if else 组合判断则要注意判断的顺序,一旦通过判断则后面的else 不会再执行

switch选择语句

switch语句原理
switch 多重选择语句根据小括号内的数值跟 case 后的值进行匹配(除了可以进行整形数值匹配外还能进行字符串匹配和枚举类型匹配,当进行字符串时匹配的对象为字符串的数据),匹配通过后,则从对应的case 语句后进行向下执行,当执行到break后停止并离开switch的大括号,否则会持续执行到大括号的结束,当所有的case 后的值都不匹配时,还会从default后开始执行,可以将default理解一种能够匹配所有情况的特殊case ,但是这个case是最后进行匹配的
例如:

public class m_hellow {

	public static void main(String ards[])
	{
		int a=10;
		switch(a)
		{
		default: a=1;
			break;	
		case 5: a=5;
		case 0:
			break;
		case 10: a=6;
			break;

		}
		System.out.printf("switch test1 a=%d",a);
	}

}

这个程序的运行结果为
switch test1 a=6;
这个程序的switch部分也可以被改写为if语句形态

if(a==5||a==0){
}else if(a==10){
	a=6;
}else{
	a=1;
}

用法总结:

  1. 如果希望连续执行,或者是执行统一语句,可以吧对应的case 排列在一起,否则必须用break;作为分割
  2. 尽量包含default语句,尽管可能不会执行到
  3. 不能用浮点数作为选择依据,因为浮点数不精确
  4. 如果逻辑简单尽量用if语句来实现因为所有的switch语句都可以改写为if语句

循环语句,while,do while ,for

所谓循环语句就是让程序在满足某一条件的情况下重复执行代码块多次直到进行循环的判断条件不满足后离开循环

while 循环

表现形式为

while(判断条件){
	语句1;
	语句2;
	……
}

运行逻辑为先进行条件判断,如果通过判断就执行大括号里的内容一次,然后继续进行判断,如果判断就从头执行一遍大括号里的内容,以此构成循环

do while循环

表现形式为

do{
	语句1;
	语句2;
	……
} while(判断条件)

运行逻辑为先执行大括号里的内容一次,然后进行判断,如果判断就从头执行一遍大括号里的内容,然后再判断,以此构成循环
其等效while为:

{
	语句1;
	语句2;
	……
} ;
while(判断条件){
	语句1;
	语句2;
	……
}

for 循环

这种计数循环跟while类型的真值判断循环相比要复杂了一些。
常见的表现形式为

for(语句1;语句2;语句)
{
	语句4;
	语句5;
	……
}

执行逻辑为:
先执行语句1,
然后进行语句2的判断,如果符合则顺序执行中括号里的内容,
然后执行语句3,
最后再进行一次语句2的判断如果符合则则顺序执行中括号里的内容,
以此构成循环。
其中语句1,语句2,语句3构成计数器,通常用i作为计数器的参数,不建议在循环体内进行对计数器参数的修改,并且建议使用时,将计数器i在语句1内进行声明,使得这个i的作用域为这个循环体。
另一种表现形式为for each 循环
这种用法主要用于更简单的遍历数组
除了能够遍历数组外,还可以遍历其他”可迭代”数据类型,比如List和Map
但是这种循环模式不能直接获取数组索引,并且不能设定遍历顺序。
使用例子

int [] ns = {1,4,9,16,25};
int i=0;
for(int n:ns) {
	System.out.printf("for each n=%d,i=%d\n",n,i++);
}

打印显示为
for each n=1,i=0
for each n=4,i=1
for each n=9,i=2
for each n=16,i=3
for each n=25,i=4
因此可以看出for each循环 顺序固定是从低到高的索引顺序

跳转语句

java 里常用的跳转语句有3种
break ,continue ,return

  • break 作用于循环体和switch语句
    当break语句将要执行时会自动检索最近的生效范围,随后跳出这个范围,失去左右,也就是只能离开一重循环或者是选择语句。
  • continue 作用于循环体
    当continue语句执行时会自动检索最近的生效范围,然后立即执行到循环的结束重新进行规则判断(for语句的计数器语句属于规则判断范畴,不会被continue跳过)
  • return 作用于函数
    return语句必须返回和当前所处函数相同返回类型的数据类型,除了void 返回型的函数,其他函数必须有对应的return语句。当return语句执行时,函数会立即终止运行并且最终随着return语句回传相应数据。

组合训练

设定一个题目,打印100以内的质数,并且将质数的个数返回
(质数,只有2个因数的正整数)
解题
设定函数:

public static int getPrimeNumber(int temp){
		int pn=0;
		for(int i=2;i<temp;i++){
			for(int j=1;j<=i;j++){
				if(j==1)
					continue;	//当因数是1是跳过
				if(i%j==0&&j!=i)   	//没有余数,则不是质数
					break;
				else if(j==i){  //因数是自己,则只有2个因数,是质数
					System.out.printf("Prime=%d\n",i);
					pn++;
				}
			}
		}
		return pn;
	}

调用函数
System.out.printf("Prime Number=%d\n",getPrimeNumber(100));

打印结果:
Prime=2
Prime=3
Prime=5
Prime=7
Prime=11
Prime=13
Prime=17
Prime=19
Prime=23
Prime=29
Prime=31
Prime=37
Prime=41
Prime=43
Prime=47
Prime=53
Prime=59
Prime=61
Prime=67
Prime=71
Prime=73
Prime=79
Prime=83
Prime=89
Prime=97
Prime Number=25
本次训练练习了if…else,for,continue,break,return 。
对于switch,while,do…while没有使用。

结语

本课我尽量脱离了网课视频,自行进行知识点整理,并且设计练习题目,和例子,大致用了3h时间,希望成功表述清楚了这些知识点。
学习并非易事,尽管这些知识我已经完美掌握,但是想要实现知识输出还是感到困难,所以网课的教育技术水平还是比较高的,推荐大家学习的时候像我一样,看完视频做一个总结,并且自行设计题目练习学到的知识。
加油学习ヾ(◍°∇°◍)ノ゙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值