1. 方法声明的语法
在 Java 中声明方法就像烹饪书里的菜谱:你要指出方法返回什么(类型)、它叫什么、需要哪些“配料”(参数),以及写出具体步骤(方法体)。
通用形式:
returnType methodName(parameters)
{
// 在这里编写语句
}
- 返回值类型——方法返回的内容(例如,int,void——如果不返回任何值,String 等)。
- 方法名——你起的名字(遵循 Java 的命名规则)。
- 参数——方法将使用的变量列表(可以为空)。
- 方法体——用花括号 { } 包起来的语句。
无参数的方法示例
void printHello()
{
System.out.println("你好,世界!");
}
说明:void——方法不返回任何值;printHello——方法名;()——没有参数。
带参数的方法示例
void printName(String name)
{
System.out.println("你好," + name + "!");
}
说明:void——不返回值;printName——方法名;String name——一个 String 类型的形参。
包含多个参数的方法示例
void printSum(int a, int b)
{
System.out.println("和:" + (a + b));
}
说明:参数用逗号分隔。在方法内部把它们当作普通变量使用,运算符 + 执行加法。
重要!
- 方法在类的内部声明,但不能在其他方法内部声明。
- 在 Java 中不能在方法内部再声明方法——不要搞“套娃”。
2. 方法的调用
声明方法就像挂了个牌子“做咖啡”。而要让咖啡真的出现,你需要调用方法——写出它的名字并传入参数值。
如何调用方法
如果方法在同一个类中并被声明为 static(就像 main 一样),可以直接用名字调用:
printHello();
printName("艾丽莎");
printSum(3, 5);
如果方法不是 static,则需要通过对象来调用(这一点会在学习类与对象时详述)。
示例:从 main 调用方法
public class MethodsDemo
{
public static void main(String[] args)
{
printHello();
printName("鲍勃");
printSum(10, 20);
}
static void printHello()
{
System.out.println("你好,世界!");
}
static void printName(String name)
{
System.out.println("你好," + name + "!");
}
static void printSum(int a, int b)
{
System.out.println("和:" + (a + b));
}
}
请注意:这些方法都使用了 static 修饰符,以便可以从 main(它本身也是 static)中调用。
3. 参数与实参:它们是什么?
参数(形参)——在声明方法时圆括号中声明的变量。
实参——调用方法时传入的实际值。
类比:形参像购物清单;实参是你实际放进购物篮的东西。
示例
static void greet(String name) // name — 形参
{
System.out.println("你好," + name + "!");
}
public static void main(String[] args)
{
greet("卡佳"); // "卡佳" — 实参
greet("瓦夏"); // "瓦夏" — 实参
}
当你调用 greet("卡佳") 时,方法内部的变量 name 将等于 "卡佳"。
多个参数
static void printInfo(String name, int age)
{
System.out.println("姓名:" + name + ",年龄:" + age);
}
public static void main(String[] args)
{
printInfo("玛莎", 25);
printInfo("彼佳", 31);
}
注意!参数的类型与顺序必须与方法声明时保持一致。
4. 实践:编写自己的方法
打印包含用户名的问候语的方法
static void sayHelloTo(String name)
{
System.out.println("你好," + name + "!");
}
public static void main(String[] args)
{
sayHelloTo("安德烈");
sayHelloTo("埃尔维拉");
}
计算两个数之和的方法
static void printSum(int a, int b)
{
int sum = a + b;
System.out.println("和:" + sum);
}
public static void main(String[] args)
{
printSum(7, 8);
printSum(15, -5);
}
打印数组元素的方法
static void printArray(int[] array)
{
System.out.print("数组:");
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args)
{
int[] nums = {1, 2, 3, 4, 5};
printArray(nums);
}
打印同一字符串 n 次的方法
static void repeatPrint(String text, int n)
{
for (int i = 0; i < n; i++)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
repeatPrint("Java —— 太酷了!", 3);
}
5. 方法如何帮助构建应用
如果你要编写一个简单的控制台游戏或计算器,把每个小任务都封装成方法,代码就会更清晰。
示例:迷你计算器
public class Calculator
{
public static void main(String[] args)
{
printGreeting();
printSum(3, 7);
printDifference(10, 4);
}
static void printGreeting()
{
System.out.println("欢迎使用计算器!");
}
static void printSum(int a, int b)
{
System.out.println("和:" + (a + b));
}
static void printDifference(int a, int b)
{
System.out.println("差值:" + (a - b));
}
}
将来你可以继续添加新方法(乘法、除法、对数组进行操作等),应用也会不断扩展,而不会变成一段很长的“长篇”代码。
6. 实用细节
方法名
- 方法名通常以小写字母开头,并使用 camelCase:printSum、sayHelloTo、calculateArea。
- 名字要能体现动作。避免使用 doStuff 和 method1 之类的名称。
参数顺序
- 调用时请遵守参数的顺序与类型。
- 如果方法是 printInfo(String name, int age),就不能调用 printInfo(25, "玛莎")。
能否声明两个同名方法?
可以,如果它们的参数列表不同(类型或数量不同)。这称为方法重载:
static void printSum(int a, int b) { /* ... */ }
static void printSum(int a, int b, int c) { /* ... */ }
这一主题会有单独的讲解——现在只需知道,Java 不会把一个名字限制为只能对应一个方法。
7. 使用方法和参数时的常见错误
错误 1:调用时参数的数量或类型不匹配。
如果方法声明为 printSum(int a, int b),而你这样调用 printSum(5),编译器会提示不存在这样的重载。同样地,printSum("五", 7)——类型错误。
错误 2:混淆形参与实参。
在方法声明中写的是形参(例如 int a, int b),而在调用时传入的是实参(printSum(5, 7))。不需要在 main 中创建同名的变量——更重要的是类型与顺序要匹配。
错误 3:尝试在方法内部声明方法。
在 Java 中,方法只能在类级别声明,不能在另一个方法内部声明。
错误 4:从 main 调用时没有使用 static。
如果你要从 main 调用某个方法,要么在方法声明中加上 static,要么先创建对象再通过对象调用该方法。细节——稍后在学习 OOP 时说明。
GO TO FULL VERSION