java中的形参与实参的区别对比解析

 更新时间:2025年11月06日 10:05:46   作者:上78将  
文章讲述了Java中形参和实参的区别,包括定义位置、作用阶段、内存分配和示例说明,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、主体不同

1、实参:在调用有参函数时,函数名后面括号中的参数为“实际参数”。

2、形参:不是实际存在变量,又称虚拟变量。

二、目的不同

1、实参:可以是常量、变量或表达式,无论实参是何种类型的量,才进行函数调用时,都必须具有确定的值,以便把这些值传递给形参。

2、形参:定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。

三、特点不同

1、实参:在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值。值在函数调用期间有效,可以参加该函数中的运算。

2、形参:形参的本质是一个名字,不占用内存空间。

形参与实参的概念

形参(形式参数)是方法定义时声明的参数,用于接收调用时传入的值。形参属于方法的局部变量,作用域仅限于方法内部。

实参(实际参数)是调用方法时传递给形参的具体值或变量,可以是常量、变量或表达式。

主要区别

定义位置不同
形参出现在方法声明中,例如:

public void print(int num) { ... }  // num是形参

实参出现在方法调用时,例如:

print(10);  // 10是实参

作用阶段不同
形参在方法定义阶段声明,用于描述方法需要的数据类型和名称。
实参在方法调用阶段传递,为形参提供具体的值。

内存分配不同
形参在方法被调用时分配内存(栈内存),方法结束后释放。
实参可以是已存在的变量或常量,其内存分配与形参无关。

示例说明

public class Example {
    // 形参:a和b
    public static int add(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        int x = 5, y = 3;
        // 实参:x和y
        int result = add(x, y);
        System.out.println(result);  // 输出8
    }
}

注意事项

  • 形参和实参的类型必须匹配或兼容(支持隐式类型转换)。
  • 基本数据类型传递的是值的副本(值传递),形参修改不影响实参。
  • 引用数据类型传递的是引用的副本,形参和实参指向同一对象,通过形参修改对象会影响实参引用的对象。

值传递与引用传递的区别

值传递示例(基本数据类型)

public static void change(int num) {
    num = 100;
}
public static void main(String[] args) {
    int a = 10;
    change(a);
    System.out.println(a);  // 输出10(未改变)
}

引用传递示例(对象类型)

public static void modifyArray(int[] arr) {
    arr[0] = 99;
}
public static void main(String[] args) {
    int[] array = {1, 2, 3};
    modifyArray(array);
    System.out.println(array[0]);  // 输出99(已改变)
}

形参与实参的概念

形参(形式参数)是方法定义时声明的参数,用于接收调用时传入的值。形参属于方法的局部变量,作用域仅限于方法内部。

实参(实际参数)是调用方法时传递给形参的具体值或变量,可以是常量、变量或表达式。

主要区别

定义位置不同
形参出现在方法声明中,例如:

public void print(int num) { ... }  // num是形参

实参出现在方法调用时,例如:

print(10);  // 10是实参

作用阶段不同
形参在方法定义阶段声明,用于描述方法需要的数据类型和名称。
实参在方法调用阶段传递,为形参提供具体的值。

内存分配不同
形参在方法被调用时分配内存(栈内存),方法结束后释放。
实参可以是已存在的变量或常量,其内存分配与形参无关。

示例说明

public class Example {
    // 形参:a和b
    public static int add(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        int x = 5, y = 3;
        // 实参:x和y
        int result = add(x, y);
        System.out.println(result);  // 输出8
    }
}

注意事项

  • 形参和实参的类型必须匹配或兼容(支持隐式类型转换)。
  • 基本数据类型传递的是值的副本(值传递),形参修改不影响实参。
  • 引用数据类型传递的是引用的副本,形参和实参指向同一对象,通过形参修改对象会影响实参引用的对象。

值传递与引用传递的区别

值传递示例(基本数据类型)

public static void change(int num) {
    num = 100;
}
public static void main(String[] args) {
    int a = 10;
    change(a);
    System.out.println(a);  // 输出10(未改变)
}

引用传递示例(对象类型)

public static void modifyArray(int[] arr) {
    arr[0] = 99;
}
public static void main(String[] args) {
    int[] array = {1, 2, 3};
    modifyArray(array);
    System.out.println(array[0]);  // 输出99(已改变)
}

到此这篇关于java中的形参与实参的区别的文章就介绍到这了,更多相关java形参与实参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java后端接入微信小程序实现登录功能

    Java后端接入微信小程序实现登录功能

    这篇文章主要介绍了Java如何在后端接入微信小程序从而实现登录功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-06-06
  • Spring高级注解之@DependsOn详解

    Spring高级注解之@DependsOn详解

    这篇文章主要介绍了Spring高级注解之@DependsOn详解,@DependsOn注解可以定义在类和方法上,意思是我这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中,需要的朋友可以参考下
    2024-01-01
  • java 利用java反射机制动态加载类的简单实现

    java 利用java反射机制动态加载类的简单实现

    下面小编就为大家带来一篇java 利用java反射机制动态加载类的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Spring AI与DeepSeek实战一之快速打造智能对话应用

    Spring AI与DeepSeek实战一之快速打造智能对话应用

    本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭建、配置API-KEY、创建ChatClient对象、创建对话接口、切换模型、使用prompt模板、流式对话等,感兴趣的朋友一起看看吧
    2025-03-03
  • 解决SpringMvc中普通类注入Service为null的问题

    解决SpringMvc中普通类注入Service为null的问题

    这篇文章主要介绍了解决SpringMvc中普通类注入Service为null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 老生常谈Java反射机制(必看篇)

    老生常谈Java反射机制(必看篇)

    下面小编就为大家带来一篇老生常谈Java反射机制(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • java中list和数组互相转换的一些方法总结

    java中list和数组互相转换的一些方法总结

    在日常的Java开发中经常会遇到需要在数组和List之间进行转换的情况,这篇文章主要给大家介绍了关于java中list和数组互相转换的一些方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • IDEA中的Run/Debug Configurations各项解读

    IDEA中的Run/Debug Configurations各项解读

    这篇文章主要介绍了IDEA中的Run/Debug Configurations各项解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 解决Java & Idea启动tomcat的中文乱码问题

    解决Java & Idea启动tomcat的中文乱码问题

    这篇文章主要介绍了Java & Idea启动tomcat的中文乱码问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • java中流的使用

    java中流的使用

    本文主要介绍了java中流的使用以及分类。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论