JavaSE08-方法详解
目录
- 一、方法的定义
- 二、方法的调用
- 三、方法重载
- 四、方法的参数
- 1.形参和实参
- 2.可变参数
- 3.命令行参数
一、方法的定义
首先,方法是什么?
- Java中的方法与其他编程语言一样,其本质是功能块,是用来完成特定功能的代码片段。
- 编写程序时最好保持方法的原子性,即一个方法只完成一个功能。
然后,方法应该如何定义:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
方法一般由以下五个部分组成:
- 修饰符:可选,告诉编译器如何调用该方法。
- 返回值类型:方法返回值的数据类型,有些方法可以没有返回值,此时是void,例如main方法。
- 方法名:方法的实际名称。
- 参数:可选,定义时的参数就像是一个占位符。这里的参数称为形参,方法被调用时传入的实际数据称为实参。
- 方法体:具体的语句,定义该方法的功能。
- return:可选,返回方法的结果,终止方法。若返回值类型为void,可不写。
public static intmax(intnum1,intnum2){
//比较两个整数的大小
intresult = 0;
if(num1==num2){
System.out.println("两个数相等");
return0;//终止方法
}
if(num1>num2){
result = num1;
}else{
result = num2;
}
returnresult;
}
二、方法的调用
Java支持两种调用方法的方式,根据方法是否具有返回值来选择。
-
当方法返回一个值的时候,方法调用通常被当做一个值。
public class Demo01 { public static void main(String[] args) { int r = max(10,20); ... } public static int max(int num1,int num2){ // 比较两个整数的大小 int result = 0; if (num1==num2){ System.out.println("两个数相等"); return 0; //终止方法 } if (num1>num2){ result = num1; }else { result = num2; } return result; } }
-
当方法返回值是void,返回调用一定是一条语句。
public class Demo02 { public static void main(String[] args) { addStar("hello"); } public static void addStar(String str){ //在字符串前后加上三个*号 System.out.println("***"+str+"***"); } }
三、方法重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法的重载:
- 方法名称必须相同
- 参数列表必须不同(个数不同,或类型不同、参数排列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅返回类型不同不足以成为方法的重载
运行下面的示例,查看一下结果如何。
public class Demo03 {
public static void main(String[] args) {
int r1 = max(10,20);
double r2 = max(10.0,20.0);
System.out.println(r1);
System.out.println(r2);
}
public static int max(int num1,int num2){
// 比较两个整数的大小
int result = 0;
if (num1==num2){
System.out.println("两个数相等");
return 0; //终止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
public static double max(double num1,double num2){
// 比较两个浮点数的大小
double result = 0;
if (num1==num2){
System.out.println("两个数相等");
return 0; //终止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
四、方法的参数
1.形参和实参
- 形参:定义方法时使用的占位符。
- 实参:调用方法时提高给方法的实际值。
public class Demo01 {
public static void main(String[] args) {
int r = max(10,20); //10和20是实参
System.out.println(r);
}
public static int max(int num1,int num2){ // num1和num2是形参
// 比较两个整数的大小
int result = 0;
if (num1==num2){
System.out.println("两个数相等");
return 0; //终止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
2.可变参数
- Java支持将同类型的不确定个数的多个参数以可变参数的形式传递给一个方法。
- 一个方法只能指定一个可变参数,并且它必须是方法的最后一个参数。
public class Demo04 {
public static void main(String[] args) {
test(0,1,2,3,4,5);
}
public static void test(int num1,int... nums){
System.out.println("常规参数:");
System.out.println(num1);
System.out.println("可变参数:");
for (int i = 0; i < nums.length; i++) { //nums.length表示 nums包含几个参数
System.out.println(nums[i]);
}
}
}
3.命令行参数
使用命令行运行程序时可能需要指定一些参数,这就需要给main方法传递命令行参数。
public class Demo05 {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]:"+args[i]);
}
}
}
在命令行运行程序需要注意路径。