• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java怎么传值?

java 搞代码 4年前 (2022-01-09) 24次浏览 已收录 0个评论

我们都知道,传值方式基本分两种:值传递和引用传递,那么在JAVA中到底是值传递还是引用传递呢?下面本篇文章就来给大家介绍一下,希望对大家有所帮助。

值传递:是指在调用函数时将实际参数复制一份传递给形参,这样在函数中对形参的修改将不会影响到实际参数的值。

引用传递:是指在调用函数时将实际参数的地址直接传递到形参,那么在函数中对参数所进行的修改,将会影响到实际参数的值。

java怎么传值?

java的传值方式:值传递(所有发生的变化只限制在方法体中,出了方法体,任何的修改操作都不再有效)。【推荐学习:java课程】

我们可以使用一段程序来验证Java中只有值传递

/** * 验证java中只有值传递 */class User{        private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;  <p>本文来源gao!%daima.com搞$代*!码$网9</p>  }}public class TestValue {    public static void change(User user2,int a2){        System.out.println("改变之前:"+user2.getName()+",a2="+a2);                user2.setName("李四"); //改变 user2 的 name 值        a2 = 10; //改变 a2 的值        System.out.println("改变之后:"+user2.getName()+",a2="+a2);                user2 = new User(); //将 user2 重新指向一个新对象        user2.setName("王五");        System.out.println("重新指向一个新对象后:"+user2.getName());    }    public static void main(String[] args){        User user1 = new User();        user1.setName("张三"); //初始化 user1 的 name 为张三        int a1 = 5; //初始化 a1 的值为 5        change(user1,a1); //调用方法验证传值方式        System.out.println("调用方法后:"+user1.getName()+",a1="+a1);    }}

运行这段程序,输出结果为:

改变之前:张三,a2=5改变之后:李四,a2=10重新指向一个新对象后:王五调用方法后:李四,a1=5

结果分析

下面我们以上图为辅助,来分析这段程序,首先我们定义了一个User类,然后在测试类中实例化了一个User对象,名为user1,并且为其赋值name = '张三'。

此时在内存中如图1所示,实例化一个对象相当于在堆中开辟了一块内存,内存地址为017,此时这个对象的引用为user1,内存地址为001,它保存了该对象在内存中的地址,也就是指向了该对象。

接下了,我们调用方法change(),来尝试改变user1name值以此验证java中的传值方式。

我们将user1作为实参传给change()方法,形参user2来接受这个实参,在这里就体现出了两种传参方式的不同。如果是按值传递,那么就像定义的那样。

图2所示,user2user1的一份副本,也就是说在传递参数时,将user1(本身是一个对象的引用),复制了一份,名为user2,它同样也是一个对象的引用,并且user1user2此时指向同一个对象。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java怎么传值?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址