常见的循环以及方法的定义

1.水仙花数

三位数:每个位数据的立方和相加是该数据本身!
什么是水仙花数:
	1)三位数----->已经给告诉范围了
	2)满足条件:
	 这三位数:没一个位上的数据本身的立方 相加的结果就是该数据本身
	 举例
		153 = 1*1*1 + 5 * 5 *5 + 3 * 3 * 3
class ForTest{
	public static void main(String[] args){
		
		//1)三位数----->已经给告诉范围了  使用for循环
		for(int x = 100; x < 1000; x ++){
			//需要每个位上的数据
			//获取个位,十位,百位的数据
			//定义变量
			int ge = x % 10 ;
			int shi = x / 10 % 10 ;
			int bai = x /10 /10 % 10;
			
			
			
		if(x == (ge * ge * ge+shi * shi *shi+bai*bai*bai)){
				//输出x即可
			System.out.println("水仙花数据是:"+x) ;
			/*
				水仙花数据是:153
				水仙花数据是:370
				水仙花数据是:371
				水仙花数据是:407
			*/
			}
		}
	}
}

2.while循环语句

while循环语句格式:
基本格式
	while(初始化语句以及条件表达式){
		 循环体语句;
		 步长语句(控制体语句) ;
	}
	
扩展格式:(推荐)
		初始化语句;
		while(条件表达式){
			循环体语句;
			步长语句(控制体语句) ;
		}
		
执行流程:
		1)首先初始化语句进行赋值
		2)判断条件表达式是否成立,如果成立,执行循环体语句
		   再次执行步长语句;
		3)继续判断条件表达式是否成立,如果成立,执行循环体语句
		  再次执行步长语句;
		  ...
		  ...
		  
		4)当条件表达式为false,不成立,while循环语句结束
class WhileDemo{
	public static void main(String[] args){
		
		//for循环
		for(int x = 0 ; x < 5 ; x ++){//x = 0,1,2,3,4
			System.out.println("helloworld") ;
		} 
		System.out.println("--------------------------") ;
		
		int j = 1 ;
		while(j <= 5){
			System.out.println("helloworld") ;
			j ++ ;
		}
	}
}

3.while循环语句和for循环语句的区别?

1)从格式上不太一样 
		for(初始化语句;条件表达式;步长语句){
			循环体;
		}
		
		初始化语句;
		while(条件表达式){
			循环体语句;
			步长语句;
		}
	2)从内存角度:(是否节省内存空间)

				变量:		编译时期变量   运行时期变量
						   int i  = 10 ;      Integer(引用类型) i = 100 ;
						   
		for循环:for循环语句结束,变量从内存中释放掉了,节省内存空间(优先)
		while循环:while循环语句结束,依然可以访问变量,耗费内存空间
		
	
	
	变量/对象   最终程序结束,都需要垃圾回收器GC
				(jvm:假想计算机--->开启:垃圾回收线程)
				
				
	3)应用场景:是否明确次数
		针对for循环:(使用居多) 明确循环次数
			举例:			==   :基本类型: int a = 10 ; int b = 20 ;
					模拟用户登录, 给三次机会! (String类:equals())
					
		针对while循环:(使用:仅此for) :不明确循环次数
			举例:
					猜数字游戏: (不知道猜多少次,能猜中!)
							键盘录入一个数据

4.do-while循环

do-while循环语句的格式: (开发中:使用不多,在java原码中)
	
	格式:
		初始化语句;
		do{
			循环体语句;
			步长语句(控制体语句) ;
		}while(条件表达式) ;
		
执行流程:
	1)初始化语句赋值
	2)直接执行循环体语句---->步长语句--->条件表达式
	....
	....
	
	特点:循环体至少执行一次 (它和while,for的区别)
class DoWhileDemo{
	public static void main(String[] args){
		
		
		int x = 6 ;
		do{
			System.out.println("helloworld");
			x ++ ;
		}while(x <= 5) ;
	}
}

5.常见的死循环

for(;;){
    
   循环体.... 
}


while(true){   (推荐)
    
    循环体语句...
}

6.for循环的嵌套

for循环的嵌套:
	
	for(初始化语句;条件表达式;步长语句){
		
		
		//循环体语句
		for(初始化语句;条件表达式;步长语句){
		
			
		}
	}

打印*形

class ForForDemo2{
	public static void main(String[] args){
		//打印:5行5列
		for(int x = 0 ; x < 5 ; x ++){ //行数
			for(int y = 0 ; y < 5 ; y ++){//列数
				System.out.print("*") ;
			}
			System.out.println() ;
		}
		
		System.out.println("-----------------------------") ;
		
		//列数在变化
		for(int x = 0 ; x < 5 ; x ++){//行数:0,1,2,3,4
			for(int y = 0 ; y <= x ;y ++){//列数
					//x=0 , y<=0  		 *
					//x= 1, y<=1  0,1	 **
					//x = 2  y<=2  0,1,2 ***
					//x =3, y<=3   0,1,2,3 ****
					//x = 4 y<=4  0,1,2,3,4 *****
					System.out.print("*") ;
			}
			System.out.println() ;
		}
		
		
	}
}

99乘法表

class ForForTest{
	public static void main(String[] args){
		
		//输出上面*形
		for(int x = 0 ;  x <9 ; x ++ ){//控制行数:外层循环
			for(int y = 0 ; y <=x ; y++){//控制列数:内层循环
				System.out.print("*") ;
			}
			System.out.println() ;
		}
		
		System.out.println("-------------------------------------") ;
		
		//99乘法表:
		//为了有数据,从1开始
		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() ;
			
		}
	}
}

7.跳转控制语句(break,continue,return) 重点

跳转控制语句:
	break  :中断,结束
	continue: 结束当前循环,立即进入下一次循环
	return :结束方法方法去使用的!(结合方法)
	
	break:中断,结束的意思
	
	不能单独使用,没有意义!
	
	在switch中以及循环中使用!
	
	循环中使用:
			1)可以在单层循环中使用
			2)早期的使用:用在for循环嵌套中使用(外层循环,内层循环)
			
				标签语句
						给外层循环/内层循环中起一个名字
						
					格式:标签名称:for(初始化语句;条件表达式;步长语句){...}
									标签名称:for(){}
									
	循环嵌套:应用场景:
	
		后期使用:
				增强for循环: 遍历集合
				
			类上于:	HashMap<String,ArrayList<>> 集合嵌套集合
class Demo{
	public static void main(String[] args){
		System.out.println("程序开始了...")  ;
		for(int x = 0 ; x < 10 ; x ++){
			
			
			if(x == 2){
				//break ;//中断,结束,循环语句中语句break,结束了
				//continue ;立即结束当前循环,进入下一次循环:x=2 :不会出现
				return ;//当前方法结束了
			}
			System.out.println(x) ;
			
		}
		System.out.println("程序结束了...") ;
		
		System.out.println("over...") ;
	}
}

方法

什么是方法:
		
		将一个独立的代码块{}抽取出来并为当前这个起名字!(作用:提高代码的复用性)
		
	方法的概念:
		使用{}将代码包裹起来,并给这个代码起一个名字:方法名
		---->以后直接使用方法名调用.  {}代码块
		
		
	如何定义方法?
	
	
	
	两种:
		有返回值类型的方法的定义
		没有返回值类型的方法定义
		
		
		第一种:有返回值类型的方法的定义
		固定格式:
		public static 返回值类型 方法名(形式参数类型1 参数名称1,形式参数类型2 参数名称2...){
				
				业务需求...
				return 结果;
		}
		
		格式的详细介绍:
		 权限修饰符:public(公共的,访问权限足够大) static(静态)
		 返回值类型:数据类型(目前基本数据类型:四类八种: )
				举例:求两个数据之后  结果:int类型
		方法名:遵循标识符的规则(见名知意)
				单个单词:全部小写
				多个单独:第一个单词小写,从第二个单词开始,每个单词首字母大写,其余小写
				    小驼峰命名法!
		形式参数类型:数据类型(目前基本数据类型:四类八种: )
		参数名称:变量名称
		
		return: 这个方法调用完毕了,带回具体的结果!
		
		
		有返回值类型的方法调用:
		1)单独调用(没有意义)
		2)输出调用:不推荐
		3)赋值调用:推荐
class FunctionDemo{
	public static void main(String[] args){
	
		//两个变量
		//a,b:两个实际参数
		int a = 10 ;
		int b = 20 ;
		
		int  result = add(a,b) ;
		System.out.println("result:"+result) ;
		
	}
	
	public static int add(int m,int n){//m =a =10, n = b = 20 将实际参数值传递进来!
		//我们自己的业务
		int c =  m + n ;
		
		//返回结果数据
		return c ;
		
	}
}