方法就是用来完成解决某件事情或实现某个功能的办法。
方法实现的过程中,会包含很多条语句用于完成某些有意义的功
能——通常是处理文本,控制输入或计算数值。
我们可以通过在程序代码中引用方法名称和所需的参数,
实现在该程序中执行(或称调用)该方法。方法,一般都有一个返回值,
用来作为事情的处理结果。
语法格式
修饰符 返回类型 方法名(参数类型 参数名1,参数类型 参数名2,...){
执行语句
...
return 返回值;
}
-
修饰符:对访问权限的限定,有静态修饰符statiic,最终修饰符final等
-
返回值类型:用于限定方法返回值的数据类型
-
参数类型:用于限定调用方法时传入参数的数据类型
-
参数名:是一个变量,用于接收调用方法时传入的数据值
-
return关键字:用于结束方法以及返回方法指定类型的值
注 1、方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表; 2、参数列表可以为空,即()内不写任何内容; 3、方法的返回值必须为方法声明的返回值类型 4、方法中没有返回值,返回值类型要声明为void,此时,方法中return 语句可以省略。
例1:
修饰符 修饰符 返回值类型 方法名 参数列表
public static void main (String[] args)
例2:
修饰符 修饰符 返回值类型 方法名 参数列表
public static int Fibonacci2 (int n)
调用的图解
方法的重载
方法重载是指在一个类中定义多个同名的方法,
但要求每个方法具有不同的参数的类型或参数的个数。
注:
- 参数个数不同,如method(int x)与method(int x,int y)不同
- 参数类型不同,如method(int x)与method(double x)不同
- 参数顺序不同,如method(int x,double y)与method(double x,int y)不同
- 重载只与方法名与参数类型相关与返回值无关 如void method(int x)与int method(int y)不是方法重载,不能同时存在
- 重载与具体的变量标识符无关
如method(int x)与method(int y)不是方法重载,不能同时存在
参数的传递
要调用一个方法时,我们会把指定的数值,传递给方法中的参数,
这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算
- 形式参数:定义方法时,参数列表中的变量
- 实际参数:调用方法时,传入给方法的数值
例:
public class Test7 {
public static void main(String[] args) {
//调用sum时2和4为实际参数
int sum = sum(2,4);
System.out.println(sum);
}
//sum方法中的参数列表中的a和b都为形式参数
public static int sum(int a,int b){
int sum =0;
sum=a+b;
return sum;
}
}
地址的介绍
一、局部变量
方法中的局部变量存在于栈内存中,当调用一个方法时,系统都会为该
方法建立一个方法栈,其所在的方法中声明的变量就存放在方法栈中
当方法结束,系统就会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而约束
二、成员变量
对象实例的引用存储在栈内存中,对象实例存储在堆内存中。
对象中声明的成员变量存储在堆中。
三、静态变量
存放于Java内存区域的方法区
与Java堆一样,是各个线程共享的内存区域
用于存储已被虚拟机加载的类的信息、常量、静态变量
局部变量和成员变量的区别
-
定义位置不同
定义在类中的变量是成员变量 定义在方法中或者代码块中里面的为局部变量
-
在内存中位置不同
成员变量存储在堆内存的对象中 局部变量存储在栈内存的方法中
-
声明的周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失 局部变量随着方法的运行出现在栈中,随着方法在栈中消失而消失
-
初始化不同
成员变量因为在堆内存中,所有默认的初始化 局部变量没有默认的初始化值,必须手动的给其赋值才能使用