一、主体不同
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形参与实参内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论