什么是方法
在Java的代码中,总会有一些会经常使用到的,相同的代码。
我们为了方便对这样的代码进行管理、使用,于是将这样的代码写在一起,给他装一个袋子里(这里用到的是Java中的封装思想)。这样在我们以后使用的时候,直接拿这个袋子去用就行了。
当然,你要把袋子里的功能先完善好。
方法的语法格式
自定义一个方法
方法包含一个方法头和一个方法体
// 如何自定义一个方法
//这是方法头
修饰符 返回值类型 方法名(参数类型 参数名,参数类型 参数名...){
//这是方法体
功能代码块
return;
}
方法的调用
那在具体使用中如何调用一个方法呢?
//方法的调用
方法名(实际参数1,实际参数2...);
具体实例
public static void main(String[] args){
//调用方法
sum(4,5);
}
//这里是一个两个参数,没有返回值的sum方法
public static void sum(int a,int b){
System.out.println(a + b);
}
9
语法详解
修饰符
在自定义一个方法的时候,首先看到的是修饰符。
修饰符我们目前只会用到public static,以后会详细学习这些修饰符。
返回值类型
什么是返回值呢
返回值就是,当我调用我建立的这个方法的时候,我需要这个方法来给我返回一个明确的结果,这个结果就叫返回值。它是一个有具体意义、实际数值的一个值。
当然,在一个方法中,我们也可以不需要这个方法来返回结果,这个时候就不需要写方法的返回值类型了,于是就可以用void关键字来表示这个方法不需要返回值。
例:
// 没有返回值的方法
public static void main(String[] args){
sum(4,5);
}
//这里我写了一个sum方法,当这个方法被调用,就会打印出两个数相加的结果。
//属于不需要返回值的方法,所以使用void关键字
public static void sum(int a,int b){
System.out.println(a + b);
}
9
那这个返回值什么时候需要,有什么作用呢?
当我们需要对方法的结果进行二次处理的时候,就需要返回值。这个时候,当你调用方法的时候,你的调用语句本身就会变成一个具体的值,这个值就是返回过来的结果。
所以我们要在方法体内的最后一行加上return关键字。
return的作用:1、返回结果 2、结束方法。
当方法运行到return这一行时,它就把结果返回给了调用者,同时结束了这个方法。
而这个return返回的结果的数据类型则必须和方法头里的数据类型一致。
我们举个例子:
// 需要返回值的方法
public static void main(String[] args){
int x = 8;
int y ;
//这里y变量可以直接等于右边的调用方法,是因为调用方法本身已经变成了值了,这个值就是返回的结果
y = sum(4,5);
System.out.println(x + y);
}
//这里的sum方法同样也是计算两个数的和,不同的是这次我们需要将结果返回给调用者
public static int sum(int a,int b){
int c = a + b;
return c;//c变量的数据类型是int,和方法头中的返回值类型一致
}
17
方法名
方法名就是自定义这个方法的名字,说白了不就是自己起名字嘛。
一般我们在起方法名的时候,尽量用可以大概描述出你这个方法是干嘛用的英文单词。
例如sum、max、print。
同时命名规范采用小驼峰式命名:
首字母小写,后面的每个单词的首字母都要大写,单词直接相连的。
例:studentStudy、testMethod
方法的参数
什么是方法的参数呢?
参数这个东西怎么讲呢。。。不太好描述啊。。。
比方我写一个方法,想要实现的功能是让两个int类型的数值相加,那么这两个数字就可以称之为参数。
我这么讲可能也不太对,反正是个人理解嘛。有更好的解释的话欢迎评论哦。
参数既然了解了,那么接下来就说说形式参数和实际参数吧。
形式参数,简称形参。指的就是在你写方法的时候,方法名后面小括号里的内容。每个形参都由参数类型和参数名组成。参数类型就是你这个参与方法的数值的类型是什么,参数名当然就是自己起名字咯。形参形参,从它的名字就可以看出来,这是个很抽象的东西。它的作用就是告诉调用者,你想调用我这个方法,就得按照我的要求来给我相对应的值,这样我才能正常运行。
和形参对应的就是实际参数了,简称实参。
实参就是在调用方法的时候,具体要传递给方法的值。刚才讲形参的时候提到了,调用者在调用方法的时候要按要求来传值,这个传递给形参的值就是实参。实参就是一个有实际意义的数值。
public static void main(String[] args){
int x = 8;
int y ;
y = sum(4,5);
// ↑ ↑
// 实参1,实参2
System.out.println(x + y);
}
public static int sum(int a,int b){
// ↑ ↑
// 形参1, 形参2
int c = a + b;
return c;
}
17
方法可以有无数个参数,也可以没有参数,这个要根据具体需求来决定。
在方法的调用中,如果方法本身是没有参数的,那么调用的时候也不需要写参数,后面的小括号里就什么都不写。
例:
// 没有参数的方法
public static void main(String[] args){
print();
}
//这个方法一经调用,就会打印出一句话,所以不需要参数
public static void print(){
System.out.println("这是没有参数的方法");
}
这是没有参数的方法
有参数的方法在调用的时候就需要保证参数了。
要保证参数的类型一致,数量一致,位置一致。
例:
//有参数的方法
public static void main(String[] arsg){
Test(20,"男");
}
public static void Test(int age,String sex){
System.out.println(age + "岁的" + sex + "人");
}
20岁的男人
方法的重载
在我们写代码的时候,总会遇到在同一个类中,需要写很多功能相似甚至一样的方法,可英文单词就那么几个。或者多个方法具有相同的功能特性,但是呢,每个功能的实现方式可能不同。那要怎么办呢?写一样名字的方法会不会报错呢?
这时我们就需要用到方法的重载了。
方法的重载:在同一个类中,方法名相同,方法的参数列表不同(参数个数、参数位置、参数的类型),与返回值类型无关。
我们调用的时候只需要按照需求给予不同的参数就可以了(这里说的是不同的参数数量、参数位置、参数类型)。
例:
public static void main(String[] args){
//当我们需要调用两个数和的方法时,只需要给两个参数,系统就会自动为我们调用只有两个参数的方法
sum(4,5);
//当我们需要调用三个数和的方法时,只需要给三个参数,系统就会自动为我们调用只有三个参数的方法
sum(4,5,6);
}
//求两个数字的和
public static void sum(int a,int b){
System.out.println(a + b);
}
//求三个数字的和
public static void sum(int a,int b,int c){
System.out.println(a + b + c);
}
9
15
例2:
public static void main(String[] arsg){
tree(20,"梨");
tree("桃",10);
}
//第一个方法,int类型在前,String类型在后
public static void tree(int hight,String name){
System.out.println(hight+ "米的" + name + "树");
}
//第二方法,String类型在前,int类型在后
public static void tree(String name,int hight){
System.out.println("好大的" +hight + "米高的" + name + "树");
}
20米的梨树
好大的10米高的桃树