如何理解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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python机器学习实战<一>:环境的配置

    Python机器学习实战<一>:环境的配置

    2021年11月14日
    48
  • Odin Inspector 系列教程 — SearchableAttribute「建议收藏」

    Odin Inspector 系列教程 — SearchableAttribute「建议收藏」通过添加SearchableAttribute特性为其添加一个搜索框,可用于搜索对应的类或其子类的成员,但目前不可用于字典类型。imageusingSirenix.OdinInspector;usingSystem;usingSystem.Collections.Generic;usingUnityEngine;publicclassSearchableExam…

    2022年7月21日
    14
  • oracle的rownumber机制[通俗易懂]

    oracle的rownumber机制[通俗易懂]rownumber伪列(动态计算):rownumber必须从1开始计算,必须外面嵌套一层才可以,rownum是查询时候动态生成的从1开时候,所以whererownumber=2返回空,rownumber=1可以查到,rownumber>=1可以查到,rownumber

    2022年6月12日
    43
  • 软件架构与设计模式_软件架构设计

    软件架构与设计模式_软件架构设计什么是架构?软件体系结构通常被称为架构,指可以预制和可重构的软件框架结构。架构尚处在发展期,对于其定义,学术界尚未形成一个统一的意见,而不同角度的视点也会造成软件体系结构的不同理解,以下是一些主流的标准观点。ANSI/IEEE610.12-1990软件工程标准词汇对于体系结构定义是:“体系架构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组…

    2022年8月31日
    1
  • 电脑声音有回音 怎么弄回去啊 5

    电脑声音有回音 怎么弄回去啊 5

    2021年10月10日
    50
  • 闫学灿acwing_算法基础课acwing下载

    闫学灿acwing_算法基础课acwing下载给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问数列中第 l∼r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,|A[i]|≤1

    2022年8月9日
    21

发表回复

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

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