我们在之前的文章中介绍了java的流程控制等内容,本篇文章,我们要介绍一下java中的方法,这个是非常关键的!
我们用之前我们最常见的System.out.println(); 来举例。
System是类,out是对象(我们后期会详细说明对象的概念)println();就是方法。
public class Demo
{
//main方法
public static void main(String[] args)
{
System.out.println("Hello,World!");//执行了输出Hello,World!
}
}
import java.util.Scanner;
public class Demo
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
scanner.close();//close就是创建对象后,包含于Scanner这个类中,所以可以使用。
}
}
java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段一个方法包含以下语法,首先来介绍一下方法的结构,然后逐一介绍一下每个部分的作用。
修饰符 + 返回值类型 +方法名(参数类型 参数名)
{
...
方法体
...
return 返回值;
}
方法包含一个方法头和一个方法体。下面是一个方法的所有部分
1、修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型(访问类型目前我们只见到了public,是公用类型,我们以后的文章中会介绍更多的访问类型)。
2、返回值类型:方法可能会返回值。returnValueTvpe 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void,比如,返回int,就填int,没有返回值就写void。
3、方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
4、参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
5、形参和实参:形参在方法被调用时用于接收外界输入的数据。实参是调用方法的时候,传递的实际参数。
6、方法体:方法体包含具体的语句,定义该方法的功能。
我们了解完基本的方法结构以后,要用代码去演示一下,光看文字是不能更好的理解,去代码中看的更清晰。
我们来定义一个加法,然后调用
public class Demo
{
//main方法
public static void main(String[] args)
{
int sum=add(1,2);//实参
System.out.println(sum);
}
//加法
//修饰符 返回值类型 方法名 参数类型 参数名(可多个)
public static int add(int num1,int num2)//形参
{
return num1+num2;//返回值
}
}
我们运行一下上面的代码,可以看到一下内容
3
进程结束....
我们可以看到,定义方法的时候,用到了static修饰符,这里是为了方便调用,所以用了静态。
我们也可以看到,传的实际参数是1和2,形参是方法中定义的参数,通过把实际参数传递给方法,方法执行内容,返回一个值。
下面来了解一下没有返回值的方法,正好用我们以前文章中的for循环找数,我们将他封装成一个方法。
关于java循环结构for
我们就把用for循环输出1-300之间能被5整除的数,并且每行输出3个,这个题目封装成方法
public class Demo {
public static void main(String[] args)
{
test();
}
//不用返回值,所以我们用void,可以直接调用输出。
public static void test()
{
for (int i = 1; i < 300; i++)
{
if (i%5==0)
{
System.out.print(i+"\t");
}
if (i%15==0)
{
System.out.println();
}
}
}
}
我们运行一下上面的代码,可以看到,输出的内容和我们不封装的时候输出的内容是一样的。
5 10 15
20 25 30
35 40 45
50 55 60
65 70 75
80 85 90
95 100 105
110 115 120
125 130 135
140 145 150
155 160 165
170 175 180
185 190 195
200 205 210
215 220 225
230 235 240
245 250 255
260 265 270
275 280 285
290 295
进程结束.....
在main方法中,其实越简洁越好,所以把一些代码封装成方法,也是一个好的程序猿要做的事情。
int sum=add(1,2);
test();
我们再写出一个两个数比大小的方法:
public class Test {
public static void main(String[] args)
{
int sum=max(88,99);
System.out.println(sum);
}
//比大小
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;
}
}
这里我们可以发现,如果方法里面有判断的话,不能每个都去return,我们可以定义一个变量,这个变量初始化的时候可以是任意值,因为我们传实参的时候,会把这个值覆盖掉,例如我们上面代码中的result。我们把值先赋给result,然后最后返回result就可以了。
我们还可以发现,如果两个数相等的时候,不能做比较,就无法输出result,所以写了一个return 0,这里拓展一下,return既可以是程序返回,也可以是终止方法。遇到了就不再向下进行了,我们实参改为相同的数字,运行一下就会出现下面内容。
两个数相等不能比较
0
进程结束.....
一个方法中,我们如果出现了判断,一定要锻炼自己的逻辑完整性,考虑到各种会发生的情况。
public class Demo
{
//main方法
public static void main(String[] args)
{
int sum=add(1,2);//实参
System.out.println(sum);
}
//加法
//修饰符 返回值类型 方法名 参数类型 参数名(可多个)
public static int add(int num1,int num2)//形参
{
return num1+num2;//返回值
}
}
我们将方法中的num1和num2换成别的参数名,对上面调用的运算结果是没有影响的。