java中什么是方法:代码复用单元
java中什么是方法,它是封装一组完成特定功能语句的代码块,依附于类或对象,具备独立输入参数、处理逻辑、返回结果,支持重复调用,可控制访问权限、设置静态修饰,你能用来拆分冗长代码、统一业务逻辑,该结构不适用于直接在方法内部再定义方法,也不能脱离类单独编写,适合JavaSE、JavaWeb开发场景下的功能抽取,JDK官方提供的Java语言规范JavaSE17版本对方法的声明格式、修饰符约束有明确定义。
java方法的基础组成
一个标准java方法由修饰符、返回值类型、方法名、参数列表、方法体、异常声明六个部分组成。修饰符用来限定访问范围,常见有public、private、protected、default,static标记后可以不用创建对象直接调用。返回值类型写在方法名前面,有结果返回就填写对应数据类型,没有返回结果固定写void。方法名遵循小驼峰命名规则,由动词开头,字母数字下划线组成,不能以数字开头。参数列表放在圆括号内,多个参数用逗号分隔,每个参数要写明类型和参数名,括号为空代表无参。方法体包裹在大括号内部,存放执行语句,return语句负责把结果送出,void类型方法可以省略return,也可以单独写return提前结束执行。
方法名重载属于java方法的常用特性,同一个类内可以存在多个同名方法,区分规则依靠参数的数量、类型、顺序,返回值类型不会参与重载判断。
java方法的调用方式
静态方法通过类名直接调用,非静态方法需要先new创建类的实例对象,再通过对象引用调用。调用时传入的实际参数,会按顺序传递给方法定义里的形式参数,基础数据类型传递的是值副本,方法内部修改副本不会影响外部原始变量,引用类型传递的是地址,方法内修改对象内部属性会同步影响外部对象。
分清值传递和引用传递。
java方法的分类对比
| 类型 | 调用条件 | 典型用途 | 限制 |
|---|---|---|---|
| 实例方法 | 必须创建对象 | 操作对象成员变量 | 不能直接访问静态变量以外静态资源 |
| 静态方法 | 类名直接调用 | 通用工具计算逻辑 | 无法直接使用this关键字 |
| 构造方法 | new对象时自动执行 | 初始化成员变量 | 没有返回值,方法名和类名一致 |
| 抽象方法 | 子类重写后调用 | 定义规范接口 | 没有方法体,只能放在抽象类、接口 |
java方法编写与使用禁忌
方法体内部不允许嵌套定义另一个方法,lambda表达式不属于方法嵌套,它是函数式接口的实例实现,和普通方法定义规则不一样。方法不要设计过长,单方法尽量控制在几十行以内,过长会降低可读性,调试时定位问题成本更高。参数数量不宜过多,参数超过5个时,你可以封装成实体类进行传参,减少参数顺序传错带来的bug。
方法的权限修饰要按需收紧,不需要对外暴露的逻辑统一用private修饰,减少外部代码随意修改内部状态,降低后续维护时的意外改动风险。
重写和重载不能混淆,重写发生在子类继承父类场景,方法名、参数列表、返回值类型要匹配,仅能修改权限为更宽松等级,抛出异常范围不能扩大;重载在同一个类中,仅依靠参数列表区分,不受继承关系约束。
递归方法属于java方法的特殊写法,方法内部调用自身,你使用递归时必须设置清晰的终止条件,终止条件缺失会触发栈溢出错误,JVM的虚拟机栈空间容量有限,递归深度过大很容易抛出StackOverflowError。
