概述
其实就是是完成特定功能的代码块,也就是其他语言中的函数
格式
定义格式
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,参数类型 参数名3…)
{
方法体;
return 返回值;
}
代码演示
public class MethodDemo{
public static void main(String[] args) {
//如何调用方法
//应该根据方法名来调用
//sum();
//调用方法名不仅要看方法名,还要看方法的参数(个数和类型)
//sum(10,50);单独调用没有意义
//因为该该方法返回了一个int类型的值,所以我们应该用一个int类型的变量接收
//赋值调用
int result = sum(10,50);//把10和50分别赋值给参数列表中的a,b
System.out.println(result);
//输出调用
System.out.println(sum(10,50));
}
/*
* 求两个数据和的方法
*/
public static int sum(int a,int b) {
int c =a+b;//求出c
return c;//返回c给sum(10,50)
}
}
格式解释
修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型
返回值类型: 用于限定返回值的数据类型
方法名: 方便我们调用的名字,没啥特别要求,尽量见名知意
参数类型: 用于接收调用方法时传入的数据的类型
参数名: 用于接收调用方法时传入的数据的变量
方法体: 完成功能的代码块,与普通的一样
return: 结束方法,把返回值带给调用者
图解
定义方法注意事项
两个明确:
- 返回值类型:也就是要求我们明确方法返回的结果的数据类型
- 参数列表:也就是要求我们明确有几个参数,并且知道这些参数是什么类型的
注意:方法与方法是平级关系,不能嵌套定义
方法的调用
有明确返回值的方法调用
- 单独调用 (没有意义)
- 输出调用,有意义,但是此方式必须把结果给输出,直接输出没法对结果再处理
- 赋值调用,此方法就可以对结果处理后再输出(建议使用)
没有明确返回值的方法调用(返回值类型为void)只能单独调用
public class MethodDemo {
public static void main(String[] args) {
//单独调用
print();//注意哈
//输出调用
//System.out.println(print );有错误因为输出为void,无法输出
//赋值调用
//void v =ptint();也是不可以的
}
public static void print() {
for(int i=1;i<=10;i++) {
System.out.println("HelloWorld");
}
}
}
注意:虽说其没有明确返回值,但是返回值类型你却不能不写,应写为void
方法的重载
概述
在同一个类中,允许存在一个以上的同名方法,只要其参数个数或者参数类型不同即可
特点
- 与返回值类型无关,只看方法名和参数类型
- 在调用时,虚拟机通过参数列表的不同来区分同名方法
参数列表不同:
- 参数的个数不同
- 参数对应的数据类型不同
- 参数的位置也就是顺序不同
代码演示
public class MethodDemo {
public static void main(String[] args) {
//定义两个变量
int a=10;
int b=20;
//求和
int result = sum(a,b);
System.out.println("result:"+result);
//定义变量
int c=30;
int result2 = sum(a,b,c);
System.out.println("result2:"+result2);
}
//求两个数据的和
public static int sum(int a,int b){
/*int c = a+b;
return c;*/
return a+b;
}
public static float sum(float a,float b) {
return a+b;
}
//求三个数据的和
/*public static int sum2(int a,int b, int c) {
return a+b+c;
}*/
public static int sum(int a,int b,int c) {
return a+b+c;
}
}
- 输出结果
result:30
result2:60
方法的传参
形式参数:
用于接收实际参数的变量,方法参数列表中的变量(就是我们在定义方法时,小括号内的参数名)
实际参数:
实际参与运算的数据,传递的变量(调用方法时传入方法的数据)
注意:
基本数据类型作为方法的参数,形式参数的改变不影响实际参数
引用数据类型作为参数传递,形式参数的改变直接影响实际参数
基本数据类型传递的是值,引用数据类型的是地址
补充
1.基本数据类型:
①整数类型:long、int、short、byte
②浮点类型:float、double
③字符类型:char
④布尔类型:boolean
2. 引用数据类型:
类、 接口类型、 数组类型、 注解类型、 字符串型等
代码演示
/*
* 基本数据类型作为参数传递,形式参数的改变不影响实际参数
* 引用数据类型的参数传递,形式参数的改变直接影响实际参数
*/
public class ArgsDemo02{
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
for(int i=0;i<arr.length;i++) {
//不换行输出,除了最后一个数外,每个数在输出时在其后加一个","
if(i<arr.length-1) {
System.out.print(arr[i]+",");
}else {
System.out.print(arr[i]);
}
}
System.out.println();//换行
change(arr);
for(int i=0;i<arr.length;i++) {
if(i<arr.length-1) {
System.out.print(arr[i]+",");
}else {
System.out.print(arr[i]);
}
}
}
private static void change(int[] a) {
for(int i=0;i<a.length;i++) {
if(a[i]%2==0) {
a[i]*=2;
}
}
}
}
输出结果
1,2,3,4,5
1,4,3,8,5