当前位置: 首页 > news >正文

Java方法的调用(值传递和引用传递)

系列文章目录

文章目录

  • 系列文章目录
  • Java方法的调用
      • 一. 静态方法
      • 二.非静态方法
      • 三.实际参数和形式参数
      • 四.值传递和引用传递
        • 1.值传递
        • 2.引用传递

Java方法的调用

一. 静态方法

静态方法调用:类名.方法名;

请添加图片描述

二.非静态方法

1.实例化 new 
2.对象类型 对象名 = 对象值

请添加图片描述

三.实际参数和形式参数

请添加图片描述

四.值传递和引用传递

1.值传递

方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy,此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。

  • 实参:方法被调用时传入的实际值,它在方法被调用前就已经被初始化,并且在方法被调用时传入。
  • 形参:方法被调用时传入的参数,如:func(int a)中的a,只有在func被调用期间a才有意义,也就是会被分配内存空间;在方法func执行完成后,a就会被销毁释放空间,也就是不存在了。
//值传递
public class Demo10 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);

        Demo10.Change(a);
        System.out.println(a); //形参只是实参创建的一个副本,副本改变了,原本当然不可能跟着改变;
    }
    public static void Change(int a){
        a=10;                //形参 无法改变 实参
                             //方法里面的a和main方法里面的a 不是同一个a
    }
}

2.引用传递

”引用”也就是指向真实内容的地址值。在方法调用时,实参的地址通过方法调用被传递给相应的形参,在方法体内,形参和实参指向同一个内存地址,对形参的操作会影响真实内容。

public class Demo11 {
    public static void main(String[] args) {
        Person pr = new Person();
        System.out.println(pr.name);

        Demo11.change(pr);
        System.out.println(pr.name);
    }
    public static void change(Person pr){
        // pr 是一个对象
        pr.name="仇振杰";
    }
}

//定义一个Person类
class Person{
    //属性:字段
    String name;
}

请添加图片描述

相关文章:

  • Java对象和类的关系与创建
  • Java构造器的使用
  • Java 封装
  • Java继承
  • java中的super和this
  • Java抽象类
  • Java案例用户登录
  • Java案例统计字符次数
  • JAVA字符串反转
  • 工欲善其事,必先利其器--tmux
  • 工欲善其事,必先利其器--vim
  • 聊聊Session、Cookie、Token、JWT
  • Django 数据库查询优化
  • pycharm创建vue项目
  • Vue的路由配置,模块引入
  • angular学习第一篇-----环境搭建
  • Apache Spark Streaming 使用实例
  • Django 博客开发教程 8 - 博客文章详情页
  • JavaScript类型识别
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Mysql优化
  • Vue.js-Day01
  • 反思总结然后整装待发
  • 记一次删除Git记录中的大文件的过程
  • 警报:线上事故之CountDownLatch的威力
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 微信小程序设置上一页数据
  • 学习ES6 变量的解构赋值
  • ionic入门之数据绑定显示-1
  • ​比特币大跌的 2 个原因
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (2)MFC+openGL单文档框架glFrame
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (图)IntelliTrace Tools 跟踪云端程序
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (一)python发送HTTP 请求的两种方式(get和post )
  • ./configure,make,make install的作用
  • ./configure,make,make install的作用(转)
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET Core 中的路径问题
  • .NET 发展历程
  • .net6+aspose.words导出word并转pdf
  • .NET应用架构设计:原则、模式与实践 目录预览
  • ::before和::after 常见的用法
  • @ComponentScan比较
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [autojs]autojs开关按钮的简单使用