(一)方法概念
方法是一段封装了特定功能的可重用的代码块,用于执行特定任务并返回结果(也可以不返回结果)。通俗地说,Java中的方法就是一个代码块,类似于C语言中的函数。
关于方法的作用及意义(理解即可):
①模块化程序结构。当代码比较复杂或者代码体量较大时,能够模块化的组织代码。
②提高代码复用性。就是说一份代码可以在多个位置重复使用。
③简化调试和维护。
(二)方法定义
语法格式:
[访问修饰符] [其他修饰符] 返回值类型 方法名 (参数列表){
// 方法体代码
[return 返回值;] // 若返回值类型非void则必须存在
}
组成部分说明:
访问修饰符:控制方法的访问权限,如public、private、protected(默认包级私有)。
其他修饰符:如static(静态方法)、final(不可覆盖)、abstract(抽象方法)。
返回值类型:方法返回值的数据类型。无返回值时用void,注意:若返回值类型不是void时,必须要有返回值。
方法名:就是方法名称,建议遵循小驼峰命名法(首字母小写,后边每一个单词首字母大写),应当具有描述性,有意义。
参数列表:输入的参数(形参)的声明,格式为:类型 参数名,有多个参数时,用 ,(逗号)分隔。允许没有参数,若方法没有参数,()中什么也不写。
方法体:实现功能的代码块,即方法内部要执行的语句。
返回值:与返回值类型相匹配,通过return语句返回。
例:定义一个方法:实现两个整数相加
public static int add(int a, int b) {
return a + b;
}
tips:
初学Java直接使用public static固定搭配,且建议按照方法定义的语法格式写全,即定义方法时带着public static。
注意:
①Java中,方法必须写在类中。如下图所示,add方法写在了JavaMethod类中。
②Java中,方法不允许嵌套定义。
③Java中,不存在方法声明这一说法。(要与C语言中函数声明区分)
(三)方法调用
方法调用过程:
调用方法 --> 传递参数 --> 执行被调方法的方法体 --> 被调方法结束并返回 --> 回到主调方法继续往下执行代码
例:计算两个整数相加
public class JavaMethod {
//定义一个方法:实现两个整数相加
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int ret = add (num1,num2);
System.out.println(ret); // 输出结果:30
}
}
步骤:
① add (num1,num2) 调用add方法;
② 将实参num1,num2传送给add方法的形参a,b;
③ 执行方法体 a+b 并且返回 a+b 的值;
④ 执行结束带着 a+b 的值,即30;
⑤ 回到主调方法,将30赋值给ret,然后继续向下执行。
注意:
①定义方法的时候,不会执行方法的代码,只有调用方法的时候才会执行。
②一个方法可以被多次调用。
方法的调用:
1.静态方法的调用
通过类名直接调用:
int result = Math.max(5, 10); // 调用Math类的静态方法
class Math {
public static int max (int a,int b) {
if (a < b) {
return b;
}else {
return a;
}
}
}
2.实例方法调用
通过对象实例调用:
String str = "Hello";
int length = str.length(); // 调用String对象的实例方法
3.方法嵌套调用
方法返回值可以作为其他方法的参数:
System.out.println(add(2, 3)); // 输出:5
(四)方法参数与返回值
1.参数传递机制
值传递:Java中所有参数均为值传递。
(1)基本类型:相当于传递值的副本,方法内修改,不改变值的原始值。
(2)引用类型:传递引用的副本,方法内修改对象属性会影响原对象。
(关于形参和实参,请参考博客:九、形参(形式参数)与实参(实际参数))
2.返回值
(1)方法的返回值是可以选择有没有的。若返回值类型不是void,必须使用return语句返回与之类型相匹配的值。没有返回值时,类型必须写成void。
(2)return语句终止方法执行,后续代码不会运行。