Java—方 法

一、方法的定义

方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。

1.1 语法

修饰符 返回值类型 方法名 ( 形参列表 ) {

方法体代码 ( 需要执行的功能代码 )

return 返回值 ;

}

例如我们进行加法运算的时候,定义一个加法方法,使用的时候直接调用。

示例:

java 复制代码
public class test {
    //定义方法
    public static int sum(int x1,int x2){
        return x1+x2;
    }
    
    public static void main(String[] args) {
        int a=10;
        int b=12;
        System.out.println(sum(a,b));//调用方法
    }
}

输出:

22

1.2 修饰符

Java 方法的修饰符主要有两类:

  1. 访问控制修饰符:
    • public:可被任何类访问。
    • protected:同一包内的类以及不同包中的子类可访问。
    • 默认(无修饰符):只能在同一包内的类中访问。
    • private:仅在定义该方法的类内部可访问。
  2. 非访问控制修饰符:
    • static:属于类,可通过类名直接调用,不能访问非静态成员。
    • final:方法不能被重写。
    • abstract:抽象方法,无具体实现,需在子类中实现(除非子类也是抽象类)、
    • synchronized:实现线程同步,同一时间只有一个线程能访问。
    • native:方法实现由其他语言(如 C、C++)编写,用于与底层系统交互。
    • strictfp:确保浮点运算严格遵循 IEEE 754 标准,保证不同平台运算结果一致 。

我们稍作了解即可,最常用的方法修饰符为public static,意味着该方法既可以在任何地方被访问,又属于类本身,能够直接通过类名来调用,无需创建类的实例。

1.3 常见问题

  1. 方法如果有具体的返回值类型,内部必须使用 return 返回对应类型的数据。方法如果无须返回数据,返回值类型必须为void(无返回值申明)。
  2. 方法如果需要接收数据,则必须定义形参,形参列表可以包含一个或多个参数,多个形参必须用逗号隔开,且不能给初始化值。方法如果不需要接收数据,则不需要定义形参。
  3. 一个方法不能定义在另一个方法里面。

使用方法可以提高代码的复用性,提高开发效率,使程序逻辑更清晰。

二、方法的案例

设计方法时主要考虑三个要素:所需的数据,业务处理的逻辑,所需返回的数据。

2.1 给定参数n,n>0,计算(1+2+3+......+n-1)

java 复制代码
public static int sum(int n){
    c=0;
    for(int i=1;i<n;i++){
        c+=i;
    }
    return c;
}

2.2 判断一个整数是奇数还是偶数,并把判断的结果输出出来。

java 复制代码
public static void judge(int n){
    if(n%2==0){
    System.out.println("偶数");
    }
    else{
    System.out.println("奇数");
    }
}

三、方法的执行原理

3.1 参数传递机制

方法被调用的时候,是进入到栈内存中运行。

基本类型和引用类型的参数在传递的时候有什么不同?

  • 都是值传递。
  • 基本类型的参数传输存储的数据值。
  • 引用类型的参数传输存储的地址值。

例:返回一个整型数组的最大值。

java 复制代码
public static int find_max(int[] arr){
    int max=arr[0];
    for(int i=0;i<arr.length;i++){
        if(max<arr[i]){
            max=arr[i];
        }
    }
    return max
}

3.2 方法重载

一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,则这些方法就称为方法重载。形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。

开发中我们经常需要为处理一类业务,提供多种解决方案,此时用方法重载来设计是很专业的。

3.3 return关键字在方法中单独使用

return可以用在无返回值的方法中,作用是:立即跳出并结束当前方法的执行。

相关推荐
2301_780789663 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
第九序言T3 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
学长毕设4 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
ZhengEnCi4 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
步行cgn4 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川4 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵4 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
程序喵大人4 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
秋天的怀念_David5 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1005 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品