方法的声明和使用
方法:就是一段可重复调用的代码段
注意:
有过其他语言学习经历的读者,在其他语言中会将方法称为函数,不管函数也好,方法也好,只是名字的不同,但是其作用都是一样的。
方法定义格式:
public static 返回值类型 方法名称 (类型 参数1,类型 参数2 ,……)
{
程序语句;
return 表达式;
}
本章所讲解的方法都是指可以使用主方法调用的方法,所以格式现在较为固定,以后还会有其他的格式。
如果在返回值类型上写上的是一个void,则表示此方法没有返回值,则就不能使用return返回内容。
在printInfo()中定义了许多代码,这些代码在调用的时候只需要调用方法名称即可,比较方便一些。
方法的命名要求:第一个单词首字母小写,之后每个单词的首字母大写。
如果需要一个方法有返回值,则直接在返回值处上写上返回值的类型即可。
public class Methdemo2 {
public static void main(String[] args)
{
int one = addOne(10,20);
float two = addTwo(10.3f,13.3f);
System.out.println("addOne的计算结果是:"+one);
System.out.println("addTwo的计算结果是:"+two);
}
public static int addOne(int x,int y)
{
int temp = 0;
temp=x+y;
return temp;
}
public static float addTwo(float x,float y)
{
float temp = 0;
temp = x+y;
return temp;
}
}
方法的重载(很重要)
方法的重载就是方法名称相同,但参数的类型和参数的个数不同,通过传递参数的个数及类型不同完成不同功能的方法调用。在调用的时候,会根据参数的类型和个数自动进行区分。
public class Methdemo2 {
public static void main(String[] args)
{
int one = add(10,20);
float two = add(10.3f,13.3f);
int three = add(1,23,45);
System.out.println("addOne的计算结果是:"+one);
System.out.println("addTwo的计算结果是:"+two);
System.out.println("addTwo的计算结果是:"+three);
}
public static int add(int x,int y)
{
int temp = 0;
temp=x+y;
return temp;
}
public static float add(float x,float y)
{
float temp = 0;
temp = x+y;
return temp;
}
public static int add(int x, int y,int z)
{
int temp = 0;
temp = x+ y+z;
return temp;
}
}
方法重载一定是根据参数的类型或个数来判断的
使用return结束一个方法
return除了可以返回内容之外,也可以结束方法。
public class Methoddemo2 {
public static void main(String[] args)
{
System.out.println("1、调用fun()方法前:");
fun(10);
System.out.println("2、调用fun()方法之后:");
}
public static void fun(int x)
{
System.out.println("3、进入fun()方法");
if (x==10)
{
return; //结束方法,返回被调用
}
System.out.println("4、正常执行完fun()方法。");
}
}
方法的递归调用
递归调用是一种特殊的调用形式,是方法自己调用自己
例如:现在假设完成一个数字的累加操作,除了可以使用循环的方式完成,也可以通过递归的方式完成。
public class Methoddemo5 {
public static void main(String[] args[])
{
System.out.println("计算结果:"+sum(100));
}
public static int sum(int num)
{
if(num ==1)
{
return 1;
}
else
{
return num +sum(num-1);
}
}
}
数组的引用传递
一个方法可以接受一个数组,也可以返回一个数组,如果方法接收一个数组的话,则此方法对数组所作的修改将全部被保留下来。
public class ArrayRedemo1 {
public static void main(String[] args)
{
int temp[] = {1,2,5};
fun(temp);
for(int i=0;i<temp.length;i++)
{
System.out.println(temp[i]+"、");
}
}
public static void fun(int x[])
{
x[0] = 6;
}
}
方法除了可以接收数组之外,也可以通过方法返回一个数组,只需要在返回值类型上,明确声明返回的类型是数组即可。
可变参数
在之前讲解方法的时候,曾经说过,一个方法在调用的时候必须根据其规定的参数传递参数,规定了五个,就必须传递五个,但是在jdk1.5之后,为了让方法更加具有灵活性,使用了可变参数的概念,在调用方法的时候可以,任意多的传递参数。
格式如下:
返回值类型 方法名称(类型……参数名)
所有的可变参数接收之后,都是以数组的形式保存下来。所以直接按数组的方式接收即可。
public class Newdeno {
public static void main(String[] args)
{
System.out.print("不传递参数 (fun())");
fun();
System.out.print("\n传递一个参数(fun(1))");
fun(1);
System.out.print("\n传递五个参数(fun(1,2,3,4,5,))");
fun(1,2,3,4,5);
}
public static void fun(int...arg)
{
for(int i = 0;i<arg.length;i++)
{
System.out.println(arg[i]+"/");
}
}
}
foreach输出
为了方便数组输出,提供了一种foreach语法,格式如下:
for (数据类型 变量名称:数组名称)
{
……
}
public class newdemo2 {
public static void main(String args[])
{
System.out.print("不传递参数");
fun();
System.out.print("\n传递一个参数(fun(1))");
fun(1);
System.out.print("\n传递五个参数(fun(1,2,3,4,5))");
fun(1,2,3,4,5);
}
public static void fun(int...arg)
{
for(int x:arg)
{
System.out.print(x+"、");
}
}
}