如何理解java方法的传值和传引用的参数传递方式_指针参数传递

如何理解java方法的传值和传引用的参数传递方式_指针参数传递结论:1)当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值2)当使用引用数据类型作为方法的形参时,若在方法体中修改形参指向的数据内容,则会对实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区;3)当使用引用数据类型作为方法的形参时,若在方法体中修改形参变量的指向,此时不会对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区例一:基本数据类型作为形参,运行结果不改变实参publicclassMain{publicstatic

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

结论:

1)当使用基本数据类型作为方法的形参时,在方法体中对形参的修改不会影响到实参的数值
2)当使用引用数据类型作为方法的形参时,若在方法体中 修改形参指向的数据内容,则会对实参变量的数值产生影响,因为形参变量和实参变量共享同一块堆区;
3)当使用引用数据类型作为方法的形参时,若在方法体中 修改形参变量的指向,此时不会对实参变量的数值产生影响,因此形参变量和实参变量分别指向不同的堆区

例一:基本数据类型作为形参,运行结果不改变实参

public class Main { 
   
    public static void main(String[] args) { 
   
        Person p = new Person();
        int n = 15; // n的值为15
        p.setAge(n); // 传入n的值
        System.out.println(p.getAge()); // 15
        n = 20; // n的值改为20
        System.out.println(p.getAge()); // 15
    }
}

class Person { 
   
    private int age;

    public int getAge() { 
   
        return this.age;
    }

    public void setAge(int age) { 
   
        this.age = age;
    }
}

例二:引用类型–修改形参指向的数据内容,运行结果改变实参指向的数值,不改变实参地址

public class Main { 
   
    public static void main(String[] args) { 
   
        Person p = new Person();
        String[] fullname = new String[] { 
    "Homer", "Simpson" };
        p.setName(fullname); // 传入fullname数组
        System.out.println(p.getName()); // "Homer Simpson"
        fullname[0] = "Bart"; // fullname数组的第一个元素修改为"Bart"
        System.out.println(p.getName()); // 是"Bart Simpson"
    }
}

class Person { 
   
    private String[] name;

    public String getName() { 
   
        return this.name[0] + " " + this.name[1];
    }

    public void setName(String[] name) { 
   
        this.name = name;
    }
}

例三:引用类型–修改形参的指向,运行结果,不改变实参的任何东西

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        String bob = "Bob";
        p.setName(bob); // 传入bob变量
        System.out.println(p.getName()); // "Bob"
        bob = "Alice"; // bob改名为Alice
        System.out.println(p.getName()); // "Bob"
    }
}

class Person {
    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179161.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 3种常用的图片压缩方法

    3种常用的图片压缩方法3种常用的图片压缩方法:把图片上传到阿里云或七牛云,借用云端的图片缩放技术进行压缩。后端对图片尺寸大小进行压缩。前端用Canvas作为媒介压缩图片。作为一名前端攻城狮,主要介绍用Canvas作为媒介压缩图片。…

    2022年6月18日
    34
  • 23岁的一无所有,其实是理所应当的「建议收藏」

    23岁的一无所有,其实是理所应当的「建议收藏」23岁那年你正处在哪个状态?现在呢? 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。分享一下成长的建议吧。匿名用户23岁那年…就是去年…… 在22岁的时候我毕业,同时第二年准备考研,结果因为压力太大,期望太高,又失利了,但是我依然满怀信心和憧憬 在我23岁那年四月,当我深爱的女孩(在这之前我追了她四年)说她要去北京时,我在毫无准备的情况下,…

    2022年7月25日
    11
  • 32H7_H7可以改H4吗

    32H7_H7可以改H4吗完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547第38章STM32H7的FIR高通滤波器实现(支持逐个数据的实时滤波)本章节讲解FIR高通滤波器实现。目录38.1初学者重要提示38.2高通滤波器介绍38.3FIR滤波器介绍38.4Matlab工具箱filterDesinger生成高通滤波器C头文件38.5FIR高通滤波器设计38.5.1函数arm_fir_i…

    2025年8月31日
    8
  • 卸载python会删除pip安装的包吗_pip更新软件包

    卸载python会删除pip安装的包吗_pip更新软件包

    2022年10月17日
    4
  • 怎样用python开发安卓app_python需要的软件

    怎样用python开发安卓app_python需要的软件我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了。最近想到尝试用python开发一款app,google搜索了一番后,发现确实有路可寻,目前也有了一些相对成熟的模块,于是便开始了动手实战,过程中发现这其中有很多坑,好在最终依靠google解决了,因此小记一番。说在前面的话python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用py…

    2022年8月12日
    8
  • SQL Server 中的逻辑读与物理读

    SQL Server 中的逻辑读与物理读

    2021年11月24日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号