# 方法概念,如何定义以及简单调用

我们知道,一个Java程序的起始点,应该是main主方法,而以后的程序不可能只在主方法里书写,

所以这就需要我们知道方法的概念,如何定义以及怎么用它

方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。

定义方法如下面所示:

修饰符 返回值类型 方法名 (参数列表){
	代码...
return ;
1
2
3
4

例如:

public void cat() {
    String name1="Chocolate";
    String name2="vanilla";
	System.out.println("这是定义了两只猫猫的方法");
}
1
2
3
4
5
  • pubvlic :这个叫修饰符,public称为公共的,也就是说这个方法任何人都能用,比如大家都可以使用中性笔写字
  • void:这个叫返回值类型,这里是空类型,所以不返回任何类型的值
  • cat:方法名,这里我们给这个方法起了个cat猫的名字,以后我们想调用此方法时直接输入代码cat(); ,即可输出本方法内的所有代码
  • 参数列表: 目前无参数
  • return:方法结束。因为返回值类型是void,方法大括号内的return可以不写。

以上方法为简单调用,也就是没有返回值的调用,如果不在方法内输出的话直接调用将不会在屏幕打印任何东西

# 三种复杂的方法调用

除了上一篇那个简单调用(没有返回值)以外,还有另外两种方法调用

打印调用:

适合需要在屏幕上输出该调用方法返回值的情况

例如下面一段两个数相加方法的代码:

public static int sum(int a,int b){      
    int result = a+b;               //计算两个数相加的方法
    return result;
}
1
2
3
4

首先与简单调用不同的是,该代码不使用void作为返回值类型,而是使用了int

说明返回值有,且为int整型

接下来看一段打印调用的代码:

public static void main(String[] args){
    sum(10,20);     //这段为简单调用
    System.out.println(sum(10,20));   //这段为打印调用
}
1
2
3
4

看出什么端倪了吗?

对,打印调用就是把简单调用外面套一个打印语句即可


哪还有一个呢?

赋值调用:

意思就是把方法最后得出的值赋给一个变量,由这个变量进行输出

再接代码

public static void main(String[] args){
    sum(15,25);                     //这段为简单调用
    System.out.println(sum(15,25)); //这段为打印调用
    //-----------分割线------------
    int number =sum(15,25);
    System.out.println("赋值调用的值为:"+number);    //这段为赋值调用
}
1
2
3
4
5
6
7

这段也能明显看出来,赋值调用也就是将sum方法产生的值赋给了number,并由number将它打印出来而已

-----------------------------------------21/07/07更新--------------------------------

# 方法的返回值

众所周知,方法的格式是以下这种:

修饰符 返回值类型 方法名 (参数列表){
	代码...
return ;
1
2
3
4

前面的修饰符都明白是public ,方法名见名知意,参数列表内存有所需参数

那返回值到底有什么门道呢?

前面方法的调用我们知道,方法的返回值是由return带回给主方法main的,带回来的返回值是什么类型的这里的返回值类型就要写什么类型,这是比较简单的做法,例如以下代码:

public int sum(int a,int b){
	return a+b;			//这里是相加sum方法
}j
1
2
3

已知有int a和int b这两个int参数,所以返回值确定为int类型

可以间接看成return (int) (a+b);

但是下面这个不同:

public double sum(double a,double b){
	return (int) (a+b);		//这里是双精度浮点转整形,大→小
}
1
2
3

这里最后返回值属于int

因为return处可以括号内添加数据类型进行转换或者强制转换(强转)

以下是方法定义,调用和返回值的注意事项↓

注意:

​ 1.方法只定义的话不会在屏幕上打印任何东西,此时需要在主方法内调用,但是简单调用也不会在屏幕上打印任何东西,如果你想在屏幕上打印你想要方法,请选用打印调用和赋值调用

​ 2.方法只能从类中写,不能方法嵌套方法

​ 3.方法定义的前后顺序不会影响任何东西,硬说影响什么的话只是你先看到的和后看到的区别

​ 4.方法如果有返回值,一定要加上return 不加则报错

​ 5.方法的返回值,一定要和最后return返回的值的类型对应起来

​ 6.如果返回值类型为void,还想要写return的话,只需要写return自己即可

​ 7.一个方法中可以有多个return,但是必须保证只有一个被执行到

# 方法的重载

对于功能性基本一样,只是参数不同的方法来说,如果我们直接一个一个定义,显得很乱不说,还会很难调用,这时候就可以使用一个很方便的技术:方法重载

举例以下代码:

public int sum(int a,int b){
    return a+b;			//定义了两个数相加的方法
}
1
2
3

以上是定义的两个数相加的方法,参数有两个,分别是整型的a和b,而这时如果你想使用三个数相加的功能

那就得再添加一个参数

public static int sum_three(int a,int b, int c)

可是这只是一个三位数相加的方法,如果再需要四位数相加的话你就得重新写一个sum_four,那岂不是太麻烦了?

所以我们就可以使用我们的新技术了,看以下代码示例

public int sum(int a, int b){
    return a+b;
}
public int sum(int a,int b,int c){
    return a+b+c;
}
1
2
3
4
5
6

看完代码,我觉得你可能会有疑问:这两个方法都叫sum,不会报错嘛?

那我们去写下试试~~

果然不会报错,因为它们虽然方法名称一样,但是参数列表不一样,

接下来我们再打印调用它一下~~

public void main(String[] args){
    System.out.println("相加的数为:"+sum(10,20));	//这里应该是30
    
    System.out.println("相加的数为:"+sum(10,20,30));	//这里应该是60
}
1
2
3
4
5

这里打印应该是:

相加的数为:30

相加的数为:60

稍微说一下:第一个调用是两个参数,所以它会自动匹配方法的第一个sum(两个参数的那个),返回a+b的值就结束了

第二个则是调用了方法的第二个(有三个参数的那个),所以它自动匹配到第二个sum上,返回a+b+c的值然后结束

这就是方法重载的简单调用了~