常见的循环以及方法的定义
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 ;
}
}