第三课:方法 M

1、定义:

  方法就是一段可重复调用的代码段。但是,现在的方法是使用主方法直接调用的,所以定义格式为:

    public static 返回值类型 | void 方法名称([参数列表]){

      [return 返回内容;]

    }

  void 表示此方法没有任何的返回值类型,不需要使用 return 语句。如果要定义有返回值的方法,直接在返回值类型上写上数据类型即可。

2、方法的重载

  在方法的使用中也存在一种概念,叫做重载。

  重载:指的是方法的名称相同,但是参数的类型或个数不同。

public class SimpleDemo{
	public static void main(String args[]){
		System.out.println(add(10,20)) ;
		System.out.println(add(30,30,30)) ;
		System.out.println(add(30.01f,30.15f)) ;
	}
	public static int add(int x ,int y){
		int temp = x + y ;
		return temp ;
	}
	public static int add(int x ,int y ,int z){
		int temp = x + y + z ;
		return temp ;
	}
	public static float add(float x ,float y){
		float temp = x + y ;
		return temp ;
	}
};

  实际上重载的概念一直在接触,System.out.println()可以接受任意类型的参数,所以此方法也属于重载的方法,但是在使用重载的时候有以下一种情况,一定要注意。

public class SimpleDemo{
	public static void main(String args[]){
	}
	public static int add(int x ,int y){
		int temp = x + y ;
		return temp ;
	}
	public static float add(int x ,int y){
		float temp = x + y ;
		return temp ;
	}
};

  会出现已在SimpleDemo中定义add(int ,int)方法的错误。以上两个方法的返回值根本不一样,此种操作不是重载,因为重载的时候看的不是方法发返回值类型,而是参数的类型或个数。

3、return的作用

  在方法的使用中还可以使用return来结束一个方法的操作,当执行到return的时候会直接返回到方法调用处继续执行。

public class SimpleDemo{
	public static void main(String args[]){
		fun(10) ;
		fun(3) ;
	}
	public static void fun(int x){
	System.out.println("进入方法。") ;
	if(x == 3){
		return ;	//返回方法的调用处
	}
	System.out.println("结束方法。") ;
	}
};

  这也是结束方法的一个手段。

4、递归调用

  在方法的操作中存在一种成为递归调用的形式,所谓的递归调用就是指,自己调用自己。

  例如:一个累加的操作

public class SimpleDemo{
	public static void main(String args[]){
		int sum = 0 ;
		sum = fun(100) ;
		System.out.println("计算结果:" + sum) ;
	}
	public static int fun(int temp){
		if(temp == 1){
			return 1 ;
		}else{
			return temp + fun(temp - 1) ;
		}
	}
};

  注意:在使用递归操作的时候一定要有明确的截止条件,否则会出现异常。

5、方法与数组

  一个方法可以接受一个数组或者返回一个数组,但是在接收数组的时候,一定要注意,数组是引用数据类型,所以方法中对数组所做的一切修改,最终都会被保留下来。

public class SimpleDemo{
	public static void main(String args[]){
		int temp[] = {1,3,5,7,9} ;	//	声明数组
		fun(temp) ;
		print(temp) ;
	}
	public static void fun(int [] x){
		x[0] = 6 ;	//修改第一个元素
	}
	public static void print(int [] x){
		for(int i = 0; i<x.length; i++){
			System.out.println(x[i]) ;
		}
	}
};

  实际上数组的引用传递,引用传递就是堆和栈内存的地址空间。

  使用方法还可以返回一个数组,只要在返回值类型上加入数组类型即可。

public class SimpleDemo{
	public static void main(String args[]){
		int temp[] = fun() ;	//	声明数组
		print(temp) ;
	}
	public static int [] fun(){
		int x[] = {1,3,5,7,9} ;
		return x ;	//返回一个数组
	}
	public static void print(int [] x){
		for(int i = 0; i<x.length; i++){
			System.out.println(x[i]) ;
		}
	}
};

  不管是接收数组还是返回数组,实际上最终都是要以数组的形式接收和返回:int[] x

  在Java中提供了很多与数组操作相关的方法

    例如:排序操作 java.util.Arrays.sort(temp) ;

  

6、foreach输出

  语法格式:

    for(数据类型 变量 : 数组){

      //操作

    }

  例:用foreach输出数组

public class SimpleDemo{
	public static void main(String args[]){
		int t1[] = {1,2,3,4,5,6,7,8,9} ;
		for(int x:t1){
			System.out.println(x) ;
		}
	}
};

  

7、可变参数

  正常情况下,一个方法在调用时,必须明确的指定传入的参数,而且参数的个数必须统一,但是在JDK1.5之后,在声明方法参数的时候加入了可变参数:

  public static 返回值类型 数组名称(数据类型 ... 参数名称)

  这样一来,在传入参数的时候就可以传递任意多个了,而且全部的参数是以数组的形式接收的。

public class SimpleDemo{
	public static void main(String args[]){
		int temp[] = {1,2,3,4,5,6,7,8,9} ;
		fun() ;	//没有参数
		fun(1) ;	//一个参数
		fun(1,3,5,7,9) ;	//多个参数
		fun(temp) ;	//一个数组
	}
	public static void fun(int ... arg){
		for(int x:arg){
			System.out.print(x + "、") ;
		}
		System.out.println() ;
	}
};

  

【2011-12-22】

原文地址:https://www.cnblogs.com/chuanstone/p/2298264.html