java 第三章 控制语句

第三章 控制语句
流程控制语句是用来控制程序中各种语句执行顺序的语句
可以把语句组合成能完成一定功能的小逻辑模块,
程序的结构可分为三类:顺序,选择,循环

顺序结构代表:"先执行a,再执行b"的逻辑。
条件判断结构代表:"如果...则..."的逻辑。
循环结构代表:"如果...则再继续..."的逻辑。

3.1 条件判断结构
条件判断结构用于判断给定的条件,然后根据条件判断的结果来控制程序的流程。
主要的条件判断结构有if结构,switch结构,
if结构又可以分为if单分支结构,if-else双分支结构,if-else if-else 多分枝结构。

3.1.1 if单分支结构 
	if单分支结构语法
	if(布尔表达式){
		语句块; 
	} 
	if语句对布尔表达式的值进行一次判断,若判断其值为真,则执行{}中的语句块,否则跳过该语句块。
	
	math.random()方法用于产生[0,1]之间的随机数,但是不包括1.
	//产生0~5之间的随机整数
	int i= (int)(6*math.random()) ;
	
	如果if语句不写{},则只能作用于后面的第一条语句。
	建议任何时候都写上。
	 
3.1.2 if-else双分支结构
	if-else 的语法结构如下:
	if(布尔表达式){
		语句块1 
	} else{
		语句块 2 
	}
	
	当布尔表达式的值为真时,执行语句块一,否则执行语句块2也就是else部分。
	if-else 与条件运算符有时候可以互换 
	
	if(a<b){
		syetem.out.println(a);
	}else{
		System.out.println(b);
	} 
	
	System.out.println((a<b)?a:b);
	
3.1.3 if-else if-else 多分支结构
	if(布尔表达式1){
		语句块1;	
	} else if(布尔表达式2){
		语句块2; 
	} ...
	else if (布尔表达式n){
		语句块n; 
	} else{
		语句块n+1; 
	}
	对应表达式为真,执行对应语句块
	 
3.1.4 switch 多分分支结构
	switch语句的语法结构
	switch(表达式){ 
	case值1:
		语句序列1;
		[break];
	case值2:
		语句序列2;
		[break];
	...
	default:
		默认语句;
	}
	switch语句会根据表达式的值,从相匹配的case标签处开始执行。
	一直执行到break语句处,或则是switch语句的末尾。
	如果表达式的值与每个case值都不匹配,则进入default语句。
	
	当布尔表达式是等值判断的情况,,可以使用 if-else if-else
	多分支结构,或则switch结构。
	如果布尔表达式是区间判断的情况,则只能使用if-else if-else

3.2 循环结构
循环结构分为两大类,一类是当型,另一类是直到型。
当型:当布尔表达式的值为true时,反复执行某语句,
当布尔表达式的值为false时才停止循环,eg:while与for循环。
直到型:先执行某语句,再判断布尔表达式,布尔表达式的值如果是true,再执行某语句。
如此反复,直到布尔表达式的值为false时才停止循环,列入do-while循环。

3.2.1 while循环
	1,语法结构:
		while(布尔表达式){
			循环体; 
		} 
	
	在循环刚开始时会计算一次布尔表达式的值,若值为真则执行循环体;
	而对于后来每一次额外的循环,都会在开始前重新计算一次。
	 
3.2.2 do-while循环
	1,语法结构
		do{
		循环体; 
	}while(布尔表达式) ;
	
	do-while循环结构会先执行循环体,然后再判断布尔表达式的值,
	若值为真,则执行循环体,当值为假时结束循环。
	do-while循环的循环体至少执行一次。
	 
3.2.3 for循环
	1,语法结构
		for(初始表达式;布尔表达式;迭代因子){
			循环体; 
		} 
								  true--->执行循环体--->迭代  
		初始化---> 布尔表达式---> 								退出 
								  false--------------> 
	初始化部分设置循环变量的初始值,
	条件判断部分为布尔表达式,
	迭代因子控制循环循环变量的增减。
	 
3.2.4 嵌套循环
	1,在一个循环语据中在嵌套一个或多个循环,
	 
3.2.5 break语句和continue语句
	1,break语句可用于任何循环语句的主体部分,
		用于强行退出循环,不执行循环中剩余的部分。
	2,continue语句用在循环语句体中,用来终止某次循环过程,
		即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

	continue语句同在while,do-while循环中时,continue语句立刻跳到循环首部,越过了当前循环的其余部分。
	continue语句用在佛如循环中时,跳到for循环的迭代因子部分。
	 
3.2.6 带标签的break语句和continue语句
	实际中没见过。

3.3 语句块
1,用{}括起来的任意简单语句,语句块确定了局部变量的作用域 ,语句块中的程序代码看作一个整体,
语句块可以嵌套在另一语句块中,但是不能在两个嵌套的语句块内声明同名变量。
语句块可以使用外部的变量,外部不能使用语句块中定义的变量。
语句块中的作用域只限于语句块。

3.4 方法
1,方法就是一段用来玩完成特定功能的代码片段,类似于其他语言的函数,
方法用于定义该类,或该类的实例变量的行为特征和功能的实现。

2,方法声明格式
	修饰符1  修饰符2...  返回值类型  方法名(形式参数列表){
		java语句; 
	} 
	
3.方法的调用方式
	对象名.方法名(实参列表)
	
	方法的详细说明;
	.形式参数:在方法声明时用于接收外界传入的数据,简称形参。
	.实参:调用方法时,实际传给方法的数据
	.返回值:方法在执行完毕后,返还给调用它的环境的数据 。
	.返回值类型:事先约定的返回值的类型,如果没有返回值,则必须显示指定为void。  
	
注意事项:
	实参的数目,数据类型,和次序必须和所调用的方法声明的形式参数列表匹配。
	return语句终止方法的运行,并指定要返回的数据。
	Java在方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)。
		基本类型传递的是该数据值的copy值。
		引用类型传递的是该对象引用的copy值,但指向的是同一对象。

3.5 方法的重载(overload)
1,方法重载指的是一个类中可以定义多个方法名相同,但是参数不同的方法。
调用时会根据不同的参数,自动匹配对应的方法。

	方法的重载实际上是完全不同的方法,只是名称相同而已。
	
2,构成方法重载的条件如下;
	不同的含义:形参类型,形参个数,形参顺序不同。
	只有返回值不同不构成方法的重载。
	只有形参的名称不同,不构成方法的重载。 

3.6 递归结构
1,递归的基本思想是自己调用自己。
斐波那契数列,汉诺塔,快排,使用递归方便解决

递归结构包含:
	定义递归头:解答什么时候不调用自身方法。
	递归体积:解决什么时候需要调用自身方法。
	
递归会占用大量系统堆栈,内存消耗多,
在递归调用层次多时速度要比循环慢得多。
任何能用递归解决的问题,也能使用迭代解决。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值