当前位置: 首页 > ops >正文

JAVASE:方法

JavaSE 方法详解

一、方法的核心概念

方法(Method)是一组执行特定任务的语句集合,它将代码逻辑封装为可复用的单元,提高代码的模块化和可维护性。

方法的组成

[修饰符] 返回类型 方法名([参数列表]) {// 方法体[return 返回值;] // 若返回类型为void,则无需return语句
}
二、方法的分类
1. 实例方法
  • 特点:通过对象调用,可访问实例变量和其他实例方法。
  • 示例
    public class Person {private String name;// 实例方法public void setName(String name) {this.name = name;}public String getName() {return name;}
    }// 调用方式
    Person p = new Person();
    p.setName("张三"); // 必须通过对象调用
    
2. 静态方法
  • 特点:使用 static 修饰,属于类而非对象,可直接通过类名调用。
  • 限制:只能访问静态成员(静态变量和静态方法),无 this 关键字。
  • 示例
    public class MathUtils {// 静态方法public static int add(int a, int b) {return a + b;}
    }// 调用方式
    int result = MathUtils.add(3, 5); // 直接通过类名调用
    
3. 构造方法
  • 特点:方法名与类名相同,无返回类型,用于初始化对象。
  • 分类:无参构造和有参构造。
  • 示例
    public class Student {private String name;// 无参构造public Student() {}// 有参构造public Student(String name) {this.name = name;}
    }
    
三、方法的参数传递

Java中参数传递方式为值传递

  • 基本类型:传递值的副本,方法内修改不影响原始值。
  • 引用类型:传递引用(内存地址)的副本,方法内可修改对象状态,但无法重新赋值引用。

示例

// 基本类型参数
public void modifyValue(int x) {x = 100; // 修改的是副本,不影响原始值
}// 引用类型参数
public void modifyArray(int[] arr) {arr[0] = 100; // 修改数组元素,影响原始对象arr = new int[3]; // 重新赋值引用,不影响原始引用
}
四、方法的重载(Overload)
  • 定义:同一类中,方法名相同但参数列表不同的现象。
  • 规则:参数的类型、个数或顺序不同,与返回类型无关。
  • 示例
    public class Calculator {public int add(int a, int b) { return a + b; }public int add(int a, int b, int c) { return a + b + c; } // 参数个数不同public double add(double a, double b) { return a + b; } // 参数类型不同
    }
    
五、方法的重写(Override)
  • 定义:子类重新实现父类中已有的方法。
  • 规则
    • 方法名、参数列表、返回类型必须与父类一致(Java 5+ 支持协变返回类型)。
    • 访问修饰符不能比父类更严格。
    • 不能重写 finalstaticprivate 方法。
  • 示例
    public class Animal {public void makeSound() {System.out.println("动物发出声音");}
    }public class Dog extends Animal {@Override // 注解:显式标识重写public void makeSound() {System.out.println("汪汪叫");}
    }
    
六、可变参数(Varargs)
  • 语法类型... 参数名
  • 特点
    • 可变参数本质是数组,可接收0个或多个参数。
    • 一个方法最多有一个可变参数,且必须位于参数列表末尾。
  • 示例
    public void printNumbers(int... numbers) {for (int num : numbers) {System.out.println(num);}
    }// 调用方式
    printNumbers(1, 2, 3); // 传递多个参数
    printNumbers(); // 传递0个参数
    
七、方法的递归
  • 定义:方法直接或间接调用自身。
  • 关键
    • 递归出口(终止条件)。
    • 递归公式(问题分解)。
  • 示例:计算阶乘
    public int factorial(int n) {if (n <= 1) { // 递归出口return 1;}return n * factorial(n - 1); // 递归调用
    }
    
八、方法的异常处理
  • throws:声明方法可能抛出的异常。
  • try-catch:在方法内部捕获并处理异常。
  • 示例
    public void readFile(String path) throws IOException {// 方法可能抛出IOExceptionFileReader reader = new FileReader(path);// ...
    }public void safeRead(String path) {try {readFile(path);} catch (IOException e) {// 处理异常}
    }
    
九、面试常见问题
  1. 重载和重写的区别?

    • 重载:同一类中方法名相同但参数不同,编译时确定。
    • 重写:子类覆盖父类方法,运行时动态绑定。
  2. Java的参数传递是值传递还是引用传递?

    • 值传递。基本类型传递值的副本,引用类型传递引用的副本。
  3. 静态方法能否调用实例方法?

    • 不能,静态方法属于类,不依赖对象,而实例方法需要通过对象调用。
  4. 可变参数的注意事项?

    • 一个方法最多有一个可变参数,且必须位于参数列表末尾。
十、最佳实践
  1. 单一职责原则:方法应只做一件事,保持代码简洁。
  2. 参数验证:在方法开始处检查参数合法性,避免空指针异常。
  3. 避免过长方法:超过100行的方法应考虑拆分。
  4. 递归优化:递归可能导致栈溢出,复杂问题优先使用迭代。

方法是Java编程的基本单元,合理设计和使用方法是提高代码质量的关键。

http://www.xdnf.cn/news/13462.html

相关文章:

  • 亚远景-ASPICE在汽车软件全生命周期管理中的作用
  • 7. 整数反转
  • 探索奇妙的LLM应用:提高工作效率的AI代理和RAG合集
  • Jemily张洁领域成就概述:匠心筑品牌,革新引航家用电梯新征程
  • 31.Python编程实战:自动化批量压缩与解压文件
  • GoldenDB简述
  • 【DVWA系列】——xss(DOM)——High详细教程
  • debian12 修改MariaDB数据库存储位置报错
  • 界面控件Kendo UI在实战应用——打通数据链路,重塑业务效率
  • UE5 蓝图按键控制物体旋转、暂停
  • Android NDK: Could not find application project directory
  • 【Mac技巧】修复Mac应用程序无法打开的解决办法
  • tryhackme 之反弹 shell 理解
  • FastAPI的数据契约:Pydantic与SQLModel联手打造健壮API
  • 斐讯N1部署Armbian与CasaOS实现远程存储管理
  • JS之Dom模型和Bom模型
  • strs[0] == “0“是否为字符串内容比较
  • 在GIS 工作流中实现数据处理(2)
  • 想考Kubernetes认证?CKA考试内容与报名全解析
  • 华测CGI-430配置
  • RAG文档解析难点3:Excel多层表头的智能解析与查询方法
  • Linux操作系统-性能优化
  • 电路图识图基础知识-行程开关自动往返运行控制电路详解(二十三)
  • SSL错误无法建立安全连接
  • BIRT交叉表维度自定义排序
  • Spring Cloud与Alibaba微服务架构全解析
  • vue封装移动端日历,可折叠展开,以及考勤
  • 大模型在输尿管下段积水预测及临床应用的研究
  • 计算机网络第3章(上):数据链路层全解析——组帧、差错控制与信道效率
  • 【期末速成】软件项目管理