java中的方法的定义及使用

方法

java方法是语句的集合,完成一个特定的功能,相当于c中的函数。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含在类或对象中
  • 方法被创建,在其他地方使用

一个方法只完成一个功能,有利于后期的扩展和改进。

优点:

  • 使程序变得更简洁,清晰,提高可读性
  • 有利于后期维护
  • 提高代码重用性
  • 提高开发效率

方法的定义

修饰符	返回值类型	方法名	(参数类型	参数名){
    . . .
    方法体
    . . .
    return	返回值;
}

方法包含一个方法头和一个方法体。

  • 修饰符:修饰符,可选,告诉编译器如何调用该方法,定义了该方法的访问类型。
  • 返回值类型:方法可能会返回值,return ValueType是方法返回的数据类型。有些方法执行操作,也许没有返回值,此时返回值类型是void。
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参 数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
    • 形式参数:在方法被调用时用来接收实际数据。
    • 实参:调用方法时,传给方法的数据。
  • 方法体:方法包含的功能块,定义该方法实现的功能。

[演示]

public static int max(int num1,int num2){
    return num1 > num2 ? num1 : num2 ;
}

方法的调用

两种调用方式,根据是否有返回值来确定。

  • 无返回值(void),例如:

    System.out.println("Hello");
    
  • 有返回值,例如:

    int larger = max(198,168);
    

[演示:方法的定义及调用]

public class item{
    public static void main(String[] args){
        int num1=198;
        int num2=168;
        int larger = max(num1,num2);
        System.out.println("max is "+larger);
    }
    public static int max(int num1,int num2){
        return num1>num2?num1:num2;
    }
}

这个程序包含 main 方法和 max 方法。main 方法是被 JVM 调用的,除此之外,main 方法和其它方法 没什么区别。JAVA中只有值传递!

main 方法的头部是不变的,如例子所示,带修饰符 public 和 static,返回 void 类型值,方法名字是 main,此外带个一个 String[] 类型参数。String[] 表明参数是字符串数组。

非静态方法
  • 没有使用static修饰符修饰的方法,就是非静态方法。
  • 调用这种方法的时候,是“一定”要使用对象的。因为非静态方法是属于对象的。(非静态属性也是一样的)

[实例]

public class Student{
 	public void go(){}    
}
public class static main(){
    Student s = new Student();
    s.go();
}
静态方法
  • 使用static修饰符修饰的方法,就是静态方法。
  • 调用这种方法的时候,“可以”使用对象调用,也“可以”使用类来调用,但是推荐使用类进行调用,因为静态方法是属于类的。(静态属性(变量)也是一样的)

[例子]

public class Student{
 	public static void go(){}    
}
public class static main(){
    Student.go();
}

方法的重载

上面是两个整型的最大值,如果想要找出两个浮点型的最大值就要用到方法的重载,就是创建另一个相同名字,但参数不同的方法。

public static double max(double num1,double num2){	//double形参
    return num1>num2?num1:num2;
}
public static int max(int num1,int num2){	//int形参
    return num1>num2?num1:num2;
}

你调用那个max方法,取决于你传的实参。是int型就调用第二个max方法,是double浮点型,就调用第一个方法。这就叫做方法的重载。

  • 就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
  • Java编译器根据方法签名判断哪个方法应该被调用。
  • 方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
  • 重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。

可变参数

jdk 1.5开始,java支持传递同类型的可变参数给一个方法。

声明方法如下:

typeName...	parameterName

声明时,在指定的参数类型后面加一个省略号(…)。

一个方法只能有一个可变参数,且可变参数必须作为方法的最后一个参数。任何普通的参数必须在它之前声明。

public class item{
    public static void main(String[] args){
        printMax(168,198,888,9898,1698);		//调用方法
    }
    public static void printMax(int... numbers){	//可变参数的应用
        if(numbers.length==0){
            System.out.println("No number");
            return ;
        }
        int max=numbers[0];
        for(int i=1;i<numbers.length;i++){	//查找最大值
            if(max<numbers[i])
                max=numbers[i];
        }
        System.out.println("Max is "+max);
        return ;
    }
}

递归

A方法调用其他方法,我们很容易理解。

而递归就是:A方法调用A方法,自己调用自己。我们在设计递归方法时,一定要设计一个出口,就是什么时候不调用自己,否则就是一个死循环。

递归结构包括两个部分:

  • 递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环
  • 递归体。解答:什么时候需要调用自身方法

[演示]

public static int fun(int num){		//计算num的阶乘
	if(num==1)
        return num;
    else
        return fun(num-1)*num;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值