精华内容
下载资源
问答
  • java中向方法传递参数是,是将参数副本传递进去,即方法运行时会被分配一块内存区域保存一个参数值copy,修改副本值,对原参数并没有影响。要理解形参和实参,并在编码中避免一些必要错误,需要弄清两个概念。...

    java中向方法传递参数是,是将参数的副本传递进去,即方法运行时会被分配一块内存区域保存一个参数值的copy,修改副本值,对原参数并没有影响。

    要理解形参和实参,并在编码中避免一些必要的错误,需要弄清两个概念。

    1、什么是形参和实参

    2、方法调用时参数传递的过程

    3、值传递和引用传递

    importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;public classArgumentsTest {public static voidmain(String[] args){

    Emp empA= new Emp("ke",22);int num = 22;

    apply(empA);

    System.out.println(empA);

    apply2(num);

    System.out.println(num);

    }public static voidapply(Emp emp){

    emp= new Emp("li",77);

    }public static void apply2(intnum){

    num= 33;

    }

    @AllArgsConstructor

    @NoArgsConstructor

    @Datastatic classEmp{privateString name;private intage;

    }

    }

    首先什么是形参什么是实参?

    在上述代码中,apply方法的参数emp,就是形参,形式参数,它代表实际参数来参与方法的逻辑;而实参就是在调用方法时,向方法传递的参数值,即main方法中empA。

    在方法运行时参数是如何传递的呢?

    首先,每个变量都会在内存中对应一个内存空间,用来存放参数值。而在方法运行时,虚拟机会在栈中创建内存空间保存一个实参的副本,该内存空间会在方法调用结束时销毁,该对副本的修改不会影响原参数的值。

    值传递和引用传递?

    在java中有两种数据类型,基本类型和引用类型。当变量是基本类型是,变量对应的内存空间保存的变量值,如上述代码中num保存22;当变量是引用类型时,内存中保存的是实际对象在堆中的地址。

    而在方法调用时,传递的都是变量对应内存中的值,不同的是基本类型参数传递值给方法,引用类型参数传递对象内存地址给方法。

    引用类型包括:类类型、接口类型、数组。

    运行上述代码:

    结果:

    ArgumentsTest.Emp(name=ke, age=22)22

    原参数值并没有被改变。

    引用类型参数被改变值的情况

    改变apply方法的逻辑:

    public static voidapply(Emp emp){

    emp.setName("li");

    emp.setAge(44);

    }

    结果:

    ArgumentsTest.Emp(name=li, age=44)

    原参数被改变了,为什么。

    因为,方法中的参数虽然是原参数的副本,但是实例对象在堆中的数据只有一份,如果直接去修改对象的属性值,就可以修改原参数值了。

    类似的,对数组,可以修改单个数组元素的值,也是有效的。

    对于包装类,可以通过反射修改内部的value,可以达到相同的效果。

    展开全文
  • java中向方法传递参数是,是将参数副本传递进去,即方法运行时会被分配一块内存区域保存一个参数值copy,修改副本值,对原参数并没有影响。要理解形参和实参,并在编码中避免一些必要错误,需要弄清两个概念。...

    java中向方法传递参数是,是将参数的副本传递进去,即方法运行时会被分配一块内存区域保存一个参数值的copy,修改副本值,对原参数并没有影响。

    要理解形参和实参,并在编码中避免一些必要的错误,需要弄清两个概念。

    1、什么是形参和实参

    2、方法调用时参数传递的过程

    3、值传递和引用传递

    import lombok.AllArgsConstructor;

    import lombok.Data;

    import lombok.NoArgsConstructor;

    public class ArgumentsTest {

    public static void main(String[] args){

    Emp empA = new Emp("ke",22);

    int num = 22;

    apply(empA);

    System.out.println(empA);

    apply2(num);

    System.out.println(num);

    }

    public static void apply(Emp emp){

    emp = new Emp("li",77);

    }

    public static void apply2(int num){

    num = 33;

    }

    @AllArgsConstructor

    @NoArgsConstructor

    @Data

    static class Emp{

    private String name;

    private int age;

    }

    }

    首先什么是形参什么是实参?

    在上述代码中,apply方法的参数emp,就是形参,形式参数,它代表实际参数来参与方法的逻辑;而实参就是在调用方法时,向方法传递的参数值,即main方法中empA。

    在方法运行时参数是如何传递的呢?

    首先,每个变量都会在内存中对应一个内存空间,用来存放参数值。而在方法运行时,虚拟机会在栈中创建内存空间保存一个实参的副本,该内存空间会在方法调用结束时销毁,该对副本的修改不会影响原参数的值。

    值传递和引用传递?

    在java中有两种数据类型,基本类型和引用类型。当变量是基本类型是,变量对应的内存空间保存的变量值,如上述代码中num保存22;当变量是引用类型时,内存中保存的是实际对象在堆中的地址。

    而在方法调用时,传递的都是变量对应内存中的值,不同的是基本类型参数传递值给方法,引用类型参数传递对象内存地址给方法。

    引用类型包括:类类型、接口类型、数组。

    运行上述代码:

    结果:

    ArgumentsTest.Emp(name=ke, age=22)22

    原参数值并没有被改变。

    引用类型参数被改变值的情况

    改变apply方法的逻辑:

    public static voidapply(Emp emp){

    emp.setName("li");

    emp.setAge(44);

    }

    结果:

    ArgumentsTest.Emp(name=li, age=44)

    原参数被改变了,为什么。

    因为,方法中的参数虽然是原参数的副本,但是实例对象在堆中的数据只有一份,如果直接去修改对象的属性值,就可以修改原参数值了。

    类似的,对数组,可以修改单个数组元素的值,也是有效的。

    对于包装类,可以通过反射修改内部的value,可以达到相同的效果。

    原文:https://www.cnblogs.com/whalesea/p/13172756.html

    展开全文
  • java中的形参和实参

    千次阅读 2018-04-16 18:33:57
    形参 形式参数 ...形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 区别: 形参变量只有在被调用时才分...

    形参

    • 形式参数
    • 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用

    实参

    • 实际参数
    • 拥有明确的值,传递给被调用方法的值
    • 实参出现在主调函数中,进入被调函数后,实参变量也不能使用

    功能

    • 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    区别:

    1. 形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量
    2. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值
    3. 实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误
    4. 函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化
    5. 当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变
    6. 如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值

    总结:

    1. 形参只在函数内部有效
    2. 当使用实参传值时,实参必须有自己明确的值即==初始化==
    3. 若将实参的值传递给形参时,形参和实参的数据类型等保持一致
    4. 数据传送类型是单向的,即实参到形参,且不可倒置
    5. ==指针类型变量:存储变量的地址== 地址改变,值改变

    参考博文:JAVA-形参和实参的区别

    img

    展开全文
  • Java中的形参和实参

    千次阅读 2018-05-30 10:17:02
    实参(实际参数): 是在调用时传递给函数参数。...是在定义函数名函数体时使用参数,用来接收调用该函数时传入参数(即实参传值给形参)。所以实参的类型个数应和形参一一对应。例如:void add(...

    实参(实际参数):

            是在调用时传递给函数的参数。可以是常量、变量、表达式、函数等。实参必须有实际确定的值,以便把值传给形参。因此应预先用赋值,输入等方法使实参获得值。

    形参(形式参数):

            形参不是实际存在的变量(虚拟变量)。是在定义函数名和函数体时使用的参数,用来接收调用该函数时传入的参数(即实参传值给形参)。所以实参的类型和个数应和形参一一对应。

    例如:

    void add(int a,int b)//定义一个函数,其中a和b就是形参
    add(1,2)//调用一个函数,1和2就是实参


    展开全文
  • 首先纠正下java2000的第一...jiabobber的这句话是对的,实参,形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有,也不叫传对象;直白的讲,形参是形式上的参数,实参是实际的参数;形参只是对实参的一种抽象类...
  • 在具体理解形参和实参的区别前,我们需要明白几个基本概念: 形参:形式参数,方法声明时参数,它用来接收调用者传递来实参;它只有在被调用时JVM才会为其分配内存单元,调用结束后回收内存单元,因此它作用...
  • 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存...
  • 例如,主方法入栈,基本数据类型的变量num入栈,再是其他方法入栈(其他方法中有与主方法相同的基本数据类型的变量num),弹栈时,其他方法出栈(伴随着num出栈),因此num的最终结果是主方法中的num的值 ...
  • (3)形参和实参的功能是做数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而向被调函数传送数据。 2,形参和实参的区别 (1)形参变量只有在被调用时才分配内存单元,在调用结束后,立即...
  • 首先纠正下java2000的第一个错误说法:...jiabobber的这句话是对的,实参,形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有,也不叫传对象;直白的讲,形参是形式上的参数,实参是实际的参数;形参只是对实参的...
  • 首先纠正下java2000的第一...jiabobber的这句话是对的,实参,形参是程序设计语言中的通用概念,并不是只有C,C++有而JAVA没有,也不叫传对象;直白的讲,形参是形式上的参数,实参是实际的参数;形参只是对实参的一种抽象类...
  • 下面是学习啦小编为大家准备的java中形参和实参的区别,希望大家喜欢!java中形参和实参的区别篇一形参不能离开方法。形参只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见。而实参可以再程序任何...
  • Java方法的形参和实参

    2020-01-22 22:28:41
    Java方法的形参和实参形参实参传值调用传引用调用总结 形参与实参对应两种类型:值类型与引用类型 值类型:包括8种基本类型(byte、short、int、long、double、float、char、boolean)+ String 引用类型:数组、类...
  • 【摘要】即将参加全国计算机等级考试考生们,考试即将到来,...关于2020年全国计算机二级JAVA复习知识点:形参和实参的具体内容如下:2020年全国计算机二级JAVA复习知识点:形参和实参形参:就是形式参数意思。...
  • 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存...
  • 形式参数和实际参数函数的参数分为形参和实参两种。在本小节,进一步介绍形参、实参的特点和两者的关系。形参出现在函数定义,在整个函数体内都可以使用,...函数的形参和实参具有以下特点:1.形参变量只有在被...
  • JAVA指针之形参和实参

    2020-06-07 11:42:49
    不同于C、C++,JAVA中不需要程序员对指针进行操作。不过,这不代表JAVA没有指针,事实上,JAVA的指针...除此以外的其他任何传递都是按地址传递,传递过去的都是实参,即cpp概念中的引用传递。最初笔者学习时也是就看
  • java中形参和实参的区别 一、形参        形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。 二、实参        ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 984
精华内容 393
关键字:

java中的形参和实参

java 订阅