首页 >> 大全

调用一个方法时的流程

2023-06-17 大全 65 作者:考证青年

方法: 什么是方法

方法,就是实现某个功能的代码块

方法的作用:

简化自己的代码,当我们定义与调用某一个功能时,如果不使用方法,那我们每次调用该功能,都需要输入该功能对应的大量代码。

所以,我们将一个功能,封装在一个方法里,当我们需要用到这个功能时,就调用这个方法,这样就能简化我们的代码。

方法的形式:

访问权限修饰符 返回值类型 方法名字(参数类型 参数1,参数2,…){

​ 方法体

​ //返回值

}

例如主方法:

public static void main(String[] args){方法体//return XXX;          //返回值,如果上面是void这里就不要return
}

注意:

方法名字,除了主方法,是可以随意命名的

返回值的类型是什么,返回值类型的名称就是什么:

例如我们没有返回值,返回值类型就是void

​ 我们返回值为整数形式,返回值类型就可以用int

​ ··········

方法的参数:

方法调用时,我们在定义方法时,定义了几个参数,调用时,就要传入几个参数

定义时传入的参数,叫做形式参数,形参(声明该方法被调用时,需要传入一种什么样的参数:包括类型,个数,顺序)

调用时传入的参数,叫做实际参数,实参,实参一定要按照形参定义的类型,个数,顺序来传入

即形参实参需要一一对应

调用一个方法时的流程:

1.加载class文件

2.调用主方法(主方法在栈内存中开辟空间)

3.在主方法中,用类名.方法名,调用sum方法,传入参数

4.sum方法被调用,开始执行(在栈内存中开辟空间)

5.sum方法中,对传入的参数进行操作

6.并得到一个结果,返回该结果

7.主方法中定义一个变量,接收sum方法得到的结果

8.打印得到的结果

注意:

若一个方法是被修饰的静态方法,该方法在某个类中定义,同时在该类中调用,那么可以直接用方法名去调用,等同于 类名.方法名

方法必须定义在类中,不能定义在方法中

方法的可变参数:

在方法的定义阶段,传入形参时,如下列形式定义形参:

static void add(double cutoff,int... arr){}

其中 int… arr[] 就是可变参数

可变参数本质就是一个语法糖==>用来方便程序员的

如上面那个代码,我们在传入实参时,就可以传入任意个数的参数了:

add(0.9,1,2,3,4,5.......)

运用实例:

public class Demo {public static void main(String[] args) {//此处传入可变参数int[] arr = times(0.5,2,4,6,8);//结果为 [1,2,3,4]System.out.println(Arrays.toString(arr));	}//此处定义可变参数public static int[] times(double cutoff,int...arr) {for (int i = 0; i < arr.length; i++) {arr[i] = (int) (arr[i] * cutoff);}return arr;}
}

方法的重载:

观察下列代码:

static void add(int a,int b){}
static void add(double a,int b){}
static void add(int a,double b){}
static void add(double a,double b){}
static void add(int a,int b,int c){}

这种代码是可行的,为什么?

这就是方法的重载:

​ 在同一个类中,允许存在同名方法,前提是他们的 参数列表:参数个数,参数顺序,参数类型 至少有一个存在区别 ==>即:两同一不同

我们在调用时,会根据传入的实参的 个数,顺序,类型 ,来调用对应的方法

方法的值的传递机制:

方法的值的传递机制分为两种类型:

​ 基本类型参数 / 引用类型参数

基本类型参数:

观察下列代码:

public static void main(String[] args){int num=10;change(num);System.out.println(num);
}
static void change(int num){System.out.println(num);num=20;System.out.println(num);
}

该代码输出结果为: 10 20 10

分析:首先初始化num=10,然后调用方法,方法中首先输出10,然后改变num=20,然后输出num=20,由于我们传递基本类型参数时,传递的是参数值,所以主方法中的num值并不会收到方法中的影响,此时主方法中输出的num还是10

public static void main(String[] args){int[] arr={10};change(arr);System.out.println(arr[0]);
}
static void change(int[] arr){System.out.println(arr[0]);arr[0]=20;System.out.println(arr[0]);
}

该代码输出结果为: 10 20 20

分析:首先初始化int[] arr={10},然后调用方法,方法中首先输出10,然后改变arr[0]=20,然后输出arr[0]=20,由于我们传递引用类型参数时,传递的是内存地址,在内存地址中,arr[0]的数值已经被修改为20,所以主方法中的arr[0]输出为20;

总结:

传递基本类型参数:传递的是参数值

传递引用类型参数:传递的是参数所引用的堆内存的地址

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了