Java基础:Day_03 分支和循环语句

1.if语句和switch语句

switch的使用细节和使用注意:
switch语句适用于对多个整型值进行匹配判断,从而实现条件的分支控制。
和if语句不同的是:if语句后面是根据boolean表达式判断的,所以表达式的结构可以任意写,而switch只是相当于做“表达式 == 数值”的boolean表达式判断。
推出:其实if语句更强大,switch仅仅只是对整数类型的判断而已,使用更简单.
这里的数值的类型是除long之外的整型类型,也就是说switch支持的类型是byte,short,char,int
本质:switch仅仅只能支持int类型.(byte,short,char,会自动提升为int类型)

switch语句选择的基本数据类型只有四种:byte、short、char、int,没有long。支持的引用类型是以上四个基本数据类型的包装类(后讲),依次是Byte、Short、Character、Integer以及从Java5开始支持的枚举和Java7开始支持的String类。

case只是用来为switch选择一个执行代码的入口,如果一旦进入某个入口之后,后面的case实际上已经失去了判断的意义,也就是说代码在进入switch执行的时会把入口case之后的case统统忽略,会一直往下执行,直到遇到break或return。(穿透)
所以大家可以发现,每一个case后面没有{}这个符号来表示一个代码块。

default表示,所有的case的值都不正确,一般放在switch的最后,也不需要使用break语句。

2.循环语句

for(int i = 0;i < 1000;i++)
	for(int j = 0;j <100;j++)
		for(int k = 0;k < 10;k++)
			testFunction(i,j,k);
//对以上代码提出优化

可以看到,对于上述代码,i,j,k的实例化和初始化分别进行了1、1000、1000 * 100次,比较次数自增次数分别为:1000、1000 * 100、1000 * 100 * 10次。所以关键在于减少其次数。于是解决方案为将内外层循环的次数颠倒,代码如下:

   int i,j,k;
    for i = 0;i < 10;i++)
    	for(j = 0;j <100;j++)
    		for(k = 0;k < 1000;k++)
    			testFunction(i,j,k);

此时,i,j,k的实例化次数均为1次,而比较次数分别为10、10 * 100、10 * 100 * 1000。

3.外层循环控制
如下代码:

class Demo
{
	public static void main(String[] args)
	{
		int i,j;
		outter: for(i = 0;i < 5; i++)
		{
			for(j = 0;j < i; j++)
			{
				System.out.print("*");
				if(j == 1 )
				{
					System.out.println("!");
					break outter;	//continue outter
				}
			}
			System.out.println();
		}
	}
}

break和continue可以对循环进行中断和跳过,对于对函数的命名后进行循环的控制,如:[标签名] : for(当然这里也可以是while)
在循环中使用break或者continue [标签名]。

猜你喜欢

转载自blog.csdn.net/PandaNotPan/article/details/89204668