Java学习篇十——关于方法的定义和使用

写在前面:本人是借助两本参考书自学的,其中部分例子和语句均是来自参考书。第一本:《Java 编程指南》,[美] Budi Kurniawan 著,闫斌 贺莲 译。第二本:《第一行代码 Java 视频讲解版》,李兴华 马云涛 著

个人对方法的理解: 假定有一部分代码可以实现一个功能(比如求和功能),而这部分代码在一段程序里被重复使用(比如很多次求和),这时就可以将这部分代码打包成一个代码块,命名为方法,通过直接调用方法实现所需功能,而不用重复输入相同的代码,达到程序代码的简洁性。(可以将这段代码看作一个小程序,而方法名就是这个小程序的名字,调用方法就是调用这个小程序)

一、方法的定义格式:
public  static  返回值类型  方法名 (参数数据类型  参数名,…)  {
    方法体(一系列语句);
    return  [返回值];
}
1、关于返回值类型

返回值类型有两种:

  1. Java中的数据类型,例如“ int ”、“ double ”、“ string ”等。若使用这种返回值类型,则必须用 “ return [返回值] ”。
  2. “ void ”,代表返回值为空。若使用 void,则最后的 return 语句可有可无,也可直接使用 “ return ;” 结束方法定义,“ [返回值] ”不强求。
2、关于方法名

方法命名规则:第一个单词的首字母小写,之后的每个单词的首字母大写,中间没有其他符号。

3、关于参数数据类型和参数

参数的数据类型即是Java中的数据类型,参数命名规则遵循标识符规则。

引用:
注意:这里介绍的方法定义格式有使用限制:“定义在主类中,并且由主方法直接调用。
关于主方法在篇一中有介绍。

简单例子1:定义返回值为空,无参数的方法

public class prtintlnfo {
	public static void main(String[]  args)  {
		printInfor();         // 调用方法 printInfor ;
		System.out.println("换行");   //直接输出
		printInfor();    // 再次调用方法 printInfor ;
	}		
	public static void printInfor()  {     // 定义返回值为空,没有参数的方法 ;
		System.out.println("xA");
		System.out.println("B");
	}    // 由于定义的返回值为空,故可不用return语句 ;
}
二、关于方法的使用——方法重载:

参数类型不同或个数不同,即使方法名相同也代表是不同的方法,即

1、
public static void pay(double money)  {  }    
2、
public static void pay(int money)  {  }    
3、
public static void pay(int  money,int  cash)  {  }    

是三个互不相同的方法;调用方法时不仅仅依靠方法名判断调用哪个方法,还需要判断参数类型,比如:

pay(10.0);     //调用上面第1种方法
pay(10);       //调用上面第2种方法
pay(0 , 5);	   //调用上面第3种方法

例子2:定义返回值为空,无参数的方法

public class prtintlnfo {
	public static void main(String[]  args)  {   //定义主方法
		pay(10.0);   // 调用方法 pay ;
		pay(10);
		pay(0);	
		pay(0.00);
		pay(0,3);
		pay(2,0);
		pay(2,3);
		pay(0,0);       // 调用方法
	}		
	
	public static void pay(double money)  {            // 定义返回值为空,参数为double型,参数名为 money,方法名为 pay 的方法 ;
		if (money > 0 )  {
			System.out.println("小数型有钱");  
		} else {
			System.out.println("小数型没钱");
		}    
		// 由于定义的返回值为空,故可以不用return语句 ;
	}
	
	public static void pay(int money)  {            // 定义返回值为空,参数为 int 型,参数名为 money,方法名为 pay 的方法 ;
		if (money > 0 )  {
			System.out.println("整数型有钱");
		} else {
			System.out.println("整数型没钱");
		}
		 // 由于定义的返回值为空,故可以不用return语句 ;
	}

	public static void pay(int money, int cash)  {            // 定义返回值为空,两个参数,参数为 int 型,参数名为 money 和 cash ,方法名为 pay 的方法 ;
		if (money > 0 )  {
			if ( cash > 0 )  {
				System.out.println("既有整钱,又有零钱");
			} else {
			System.out.println("有整钱,没零钱");
		    }
		} else {
			if ( cash > 0 )  {
				System.out.println("没整钱,有零钱");
			} else {
			System.out.println("既没整钱,又没零钱,买什么东西!");
		    }
		}
		 // 由于定义的返回值为空,故可以不用return语句 ;
	}
}

运行结果为:

小数型有钱
整数型有钱
整数型没钱
小数型没钱
没整钱,有零钱
有整钱,没零钱
既有整钱,又有零钱
既没整钱,又没零钱,买什么东西!

例子3:利用return语句结束方法调用:

public class prtintlnfo {
	public static void main(String[]  args)  {    //定义主方法
		lucky(7);
		lucky(9);		
	}	
	public static void lucky ( int x)  {    // 定义返回值为空,参数为 int 型,参数名为 x,方法名为 lucky 的方法 ;
		if (x != 7 )  {         
			return;           //return决定了若满足if语句的条件,直接结束方法,下面的语句不再运行
		} else {
	    	System.out.println("猜对啦!7是我的幸运数字哦!!");
	    }
	}
}

运行结果为:

猜对啦!7是我的幸运数字哦!!

引用:
注意: 虽然方法重载可以返回不同数据类型的值,但从标准开发来讲,还是建议方法重载都返回相同类型的数据,只存在参数个数上的差别。

例子3:定义有返回值,有参数的方法

public class prtintlnfo {
	public static void main(String[]  args)  {    //定义主方法
		int x = add(1,3);    //此时 add(1,3) 值为1,赋给x
		int y = add(1,2);   //此时 add(1,2) 值为2,赋给y
		int z = add(0,3);  //此时 add(0,3) 值为3,赋给z
		System.out.println("x = " + x ); 
		System.out.println("x = " + add(1,3) );    //也可以直接将方法的返回值进行输出
		System.out.println("y = " + y);
		System.out.println("z = " + z);
	}	
	
	public static int add(int x, int y)  {  //定义返回值类型为 int 、两个数据类型为 int 的参数,参数名为 x和y 、方法名为 add 的方法
		if ( x == 1){
			if ( y != 2)  {
				return  x;
			}	
			return y;
		}
		return x + y;
	}
}

运行结果为:

x = 1
x = 1
y = 2
z = 3
三、关于方法的使用——方法递归调用:

引用
递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式.在进行递归调用操作时必须满足两个条件:
1. 必须有结束条件
2. 每次调用时都需要改变传递的参数

Tips: 在最初学习的时候尽量少用递归,如果处理不当,就有可能出下内存的溢出问题.

例子4:

public class sum {
	public static void main(String[]  args)  {    //定义主方法
	System.out.println(sumsum(100) );   // 1-100的累加
	}
	
	public static int sumsum (int num)  {      //定义方法和参数
		if (num == 1 ) {                                 //结束递归调用的条件
			return 1 ;                                      //最后一次调用的结果返回1
		}
		return num + sumsum (num - 1);        //递归调用
	}
}

流程分析:
第一次调用:return 100 + sumsum(99)
第二次调用:return 100 + 99 + sumsum(98)
… …
最后一次调用:return 100 + 99 +… …+ 1

运行结果为:

5050
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值