程序结构和方法

分支循环

if和switch

1、在if-else分支语句中不加大括号会导致悬垂分支问题,即else和if的对齐有歧义,所以大括号不能省。
在这里插入图片描述
2、switch分支的几个注意点:
a、switch语句条件表达式中,不支持浮点型和长整型,只支持int/char/string/Enum,或者比int小的,比如byte和short;
b、switch表达式不支持复杂条件,计算结果必须是确定的数字,不能表示区间;
c、switch的一般场景有限,常用于分支固定,选择也固定的场景;
d、switch可实现的,if分支一定可以实现,反之不一定;
e、switch语句中,到底有无break要看具体的场景,某些分支不使用break语句可实现多重选择(网页端的多选框)。

while和for

while循环语句
1、while常用于明确知道循环的终止条件,但循环次数不定的场景。
2、while循环表达式满足就会一直执行循环体代码,注意在每次循环结束之后要更新循环条件。
3、凡是遇见程序卡死大概率是死循环,忘记更新循环条件,程序无限循环,或者是存在分号问题。

在这里插入图片描述
关于nextLine换行符的说明:
1、在String name = sc.nextLine()中,nextLine这个方法默认以回车作为输入的结束,只识别回车。
2、若先输入一个整数,nextInt按下回车,然后调用nextLine方法想获取一个字符串,此时这个字符串拿不到。
在这里插入图片描述
3、在某些数据输入之后,在真正想获取的字符串之前,先调用一次空的nextLine方法吃掉换行符。
在这里插入图片描述

使用while循环搭配hasNextXXX()方法,检测程序是否输入指定类型的内容
.hasNextInt()表示下一个输入为整数;
.hasNextLine()表示下一个输入为整行数据;
.hasNextDouble()表示下一行输入为小数;
若输入内容和判断不一致,循环退出。

for循环语句
1、常用于明确知道循环次数的场景。
2、for()循环中()中的内容可以省略,在循环之外或者循环体内部定义。

break和continue:break表示执行到break语句,跳出当前循环;continue表示执行到continue时继续下一次循环,本次循环的剩余语句不再执行。
在Java中goto是保留字,没有具体含义,要实现类似C中的goto功能,可以使用break label跳到对应的标签位置(跳出多层循环)
在这里插入图片描述

方法

定义与使用

方法:将程序中多次使用的代码块抽象出来形成方法,方法可以重复调用,减少重复编写,降低开发难度。
Java中方法的定义语法:

public static 返回值类型 方法名称(参数类型 参数名称,......{
		//方法体代码
		[return 语句]//有返回值的方法才需要写return语句
}

1、到底有无返回值以及返回值的类型,都要根据方法的作用来判断。采用小驼峰命名法来命名方法名称,特别地,若返回值为布尔类型,方法名采用isXxxx来命名。
2、在Java中,不存在方法声明地概念!!!定义一个方法时必须写方法体!!
3、若void类型的方法内部出现了return语句,则表示提前结束方法调用,return之后的代码不会执行。

方法的调用过程
实参:实际传递的参数,调用方法时传递的值。
形参:定义方法时给参数设置的名称,形参没有具体数值。
从主方法开始依次向下执行,当碰到另一个方法调用时,主方法就卡在方法调用处,直到另一个方法有返回值时,主方法继续执行,直到主方法所有代码执行结束。

方法的栈帧
方法调用过程在JVM内部就是一个“栈”,先进后出的结构,每个方法从调用到返回就对应操作系统栈的一个“栈帧”。
每个方法内部的临时变量(形参、局部变量),当主方法结束调用,方法的栈帧就会从系统栈帧中弹出,栈帧的所有临时变量都会被系统销毁。
在这里插入图片描述

Java中方法的实参和行参的传递只有值传递。所谓值传递是将实参的数值拷贝给形参,并不是将实参本身给形参。
方法的调用过程就对应一个栈帧在系统栈中的入栈和出栈过程。

重载和递归

方法重载
1、在同一个类中,定义了若干个方法名称相同参数个数或类型不同与返回值无关的一组方法,称为方法重载,是一种静态绑定(在编译阶段通过方法参数就能确定到底调用的是哪个方法)
在这里插入图片描述
之所以println()方法传递任意参数都可以,原因在于JDK定义了若干个println的重载方法。
在这里插入图片描述
2、方法重载与方法的返回值无关! 看的都是参数类型和个数。若两个同名方法,参数列表完全一致,只是返回值不同,无法构成重载方法。
在这里插入图片描述
方法递归
1、方法递归就是方法在执行过程中,自己调用自己的过程。
在这里插入图片描述
2、递归必须同时满足的条件:
a、一个大问题可以拆分为若干个子问题的解;
b、拆分后的子问题和原问题出数据规模不同之外,解题思路完全相同;
c、存在递归的出口(问题的拆分是有限的,不可能一直拆分下去)(终止条件)
一定要宏观抓住函数的语义(定义这个函数解决什么问题),在函数内部解决当前能干的事情,剩下交给子函数(递归函数)
例如求一个整数的阶乘:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值