【Java基础】函数调用过程

函数

  • 定义: 具备特定功能的一段独立的代码段。什么时候用到这个功能,什么时候调用。
  • 作用: 解决重复性代码。
  • 命名规范: 驼峰命名法(第一个单词首字母小写,从第二个单词开始首字母大写)。
  • 调用者:主函数
  • 自定义函数需要明确两点:
    1. 确定有没有参数
      函数在实现功能的过程中是否用到了不确定的数据,用到了则有参数,没用到则没有参数
    2. 确定有没有返回值
      函数功能的结果是不是一个数据,如果是一个数据则需要返回值,否则不需要
import java.util.Scanner;
class Demo7
{
	//求两个整数的和
	public static void add()
	{
		Scanner sc=new Scanner(System.in);
		int num1,num2,sum=0;
		System.out.print("请输入第一个整数:");
		num1=sc.nextInt();
		System.out.print("请输入第二个整数:");
		num2=sc.nextInt();
		sum=num1+num2;
		System.out.print("sum="+sum);
	}
	//主函数
	public static void main(String[] args) 
	{
		add();//函数调用
	}
}

调用过程

​ 函数是需要被调用的,当调用函数时,会去执行函数内部的代码,内部的代码全部执行完,会再回到调用该函数的位置,继续向下执行。

语法

  • 函数的重点是是实现功能,功能中用到的数据不是函数考虑的重点。
  • 大括号中的内容是函数体
返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,... ) {
	执行语句;
	return 返回值;
}
void 函数名(参数类型 形式参数1,参数类型 形式参数2,... ) {
	执行语句;
	return;
}
参数
  • 形参:形式参数,用来接收数据,函数调用完,形参和形参所在的函数出栈,内存释放
  • 实参: 实际参数,要和形参的数据类型、个数、顺序都要保持一致,所以通过参数的方式来接收用到的数据(实参和形参的个数,顺序,类型都要一致)
import java.util.Scanner;
class Demo8
{
	//求两个整数的和
	public static void add(int a,int b)//形式参数
	{
		int sum=a+b;
		System.out.print("sum="+sum);
	}

	public static void main(String[] args) //主函数:调用者
	{
		Scanner sc=new Scanner(System.in);
		int num1,num2;
		System.out.print("请输入第一个整数:");
		num1=sc.nextInt();
		System.out.print("请输入第二个整数:");
		num2=sc.nextInt();
		add(num1,num2);//实际参数
	}
}

求打印结果 (数组内存、形参实参、函数内存

class Demo2
{
    public static void main(String[] args)
    {
        int[] arr=new int[2];
        fun(arr);
        System.out.println(arr[0]);//0
    }
    public static void fun(int[] arr)
    {
        arr=new int[5];
        arr[0]=66;
    }
}
  1. main函数中,引用数据类型引用变量arr并为其赋值一个数组地址;
  2. fun方法将接收到的实参arr引用的地址值赋给形参arr;
  3. 形参arr被赋值一个新的地址,形参引用的数组中的第一个数据被赋值,实参arr并无影响,依旧指向原地址;
  4. 函数调用结束,形参和其所在的函数一起出栈,内存立即释放;
  5. 形参指向的数组地址成为垃圾,等待垃圾处理线程回收;
  6. 打印实参所引用数组的第一个数据,为默认值0。
返回值
  • 函数的运算结果,使用return来返回给调用者。
  • 一个函数没有返回值也可以使用return,作用是结束函数
import java.util.Scanner;
class Demo9
{
	//求两个整数的和
	public static int add(int a,int b)//形式参数:用来接收数据
	{
		int sum=a+b;
		return sum;
		//System.out.print("sum="+sum);//无法访问的语句
	}

	public static void main(String[] args) //主函数:调用者
	{
		Scanner sc=new Scanner(System.in);
		int num1,num2;
		System.out.print("请输入第一个整数:");
		num1=sc.nextInt();
		System.out.print("请输入第二个整数:");
		num2=sc.nextInt();
        
		he=add(num1,num2);//返回到he
		System.out.print("he="+he);
	}
}

在这里插入图片描述

函数执行完,在栈中开辟的内存会立刻释放

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值