首页 > 编程语言 >Java值传递

Java值传递

时间:2023-06-17 12:11:58浏览次数:42  
标签:person2 Java xiaoLi 传递 Person person1 xiaoZhang 实参

一、形参&实参

实参:实际传递给方法的参数

形参:用于定义方法,接收实参,不需要有确定的值

 

二、值传递&引用传递

值传递:方法接受的是实参值的拷贝,会创建副本

引用传递:方法接收的是实参所引用对象在堆中的地址,不会创建副本,对形参的修改将影响到形参

Java只有值传递

 

	public static void main(String[] args) {
      int[] arr = { 1, 2, 3, 4, 5 };
      System.out.println(arr[0]);
      change(arr);
      System.out.println(arr[0]);
	}

	public static void change(int[] array) {
      // 将数组的第一个元素变为0
      array[0] = 0;
	}

  输出:

1
0

这里传递的还是值,不过,这个值是实参的地址罢了!

public class Person {
    private String name;
   // 省略构造函数、Getter&Setter方法
}

public static void main(String[] args) {
    Person xiaoZhang = new Person("小张");
    Person xiaoLi = new Person("小李");
    swap(xiaoZhang, xiaoLi);
    System.out.println("xiaoZhang:" + xiaoZhang.getName());
    System.out.println("xiaoLi:" + xiaoLi.getName());
}

public static void swap(Person person1, Person person2) {
    Person temp = person1;
    person1 = person2;
    person2 = temp;
    System.out.println("person1:" + person1.getName());
    System.out.println("person2:" + person2.getName());
}

  输出:

person1:小李
person2:小张
xiaoZhang:小张
xiaoLi:小李

两个引用类型的形参互换并没有影响实参:

swap 方法的参数 person1person2 只是拷贝的实参 xiaoZhangxiaoLi 的地址。因此, person1person2 的互换只是拷贝的两个地址的互换罢了,并不会影响到实参 xiaoZhangxiaoLi

 

标签:person2,Java,xiaoLi,传递,Person,person1,xiaoZhang,实参
From: https://www.cnblogs.com/coooookie/p/17487305.html

相关文章

  • JAVA集合
    一、集合框架概览Java集合也叫做容器,由两大接口派生而来,一个是collection接口,主要用于存放单一元素,另一个是map接口,用于存放键值对。collection有三个子接口:list、set、queue。相较于数组,Java集合的优势在于它们的大小可变、支持泛型、具有内建算法,比如add(),remove()等。 l......
  • java——微服务——spring cloud——Nacos——Nacos配置共享
       ......
  • java——微服务——spring cloud——Nacos——Nacos配置热更新
                                                          ......
  • Java 命名规范
    包命名规范包(Package)的作用是将功能相似或相关的类或者接口进行分组管理,便于类的定位和查找,同时也可以使用包来避免类名的冲突和访问控制,使代码更容易维护。通常,包名使用小写英文字母进行命名,并使用“.”进行分割,每个被分割的单元只能包含一个名词。一般地,包命名常采用顶级域......
  • 【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实
    异常传播有时候,您可能需要重新抛出捕获到的异常。这种情况通常发生在捕获到Error或RuntimeException时,因为您可能没有预料到这些异常,但在声明捕获Throwable和Exception时,它们也被包含在内了。为了解决这个问题,Guava提供了多种方法来判断异常类型并重新抛出异常。例如:try{......
  • JavaScript & TypeScript 学习总结
    @目录JavaScriptJavaScriptBOM对象JavaScriptDocument对象JavaScript事件处理JavaScript变量JavaScript函数基础JavaScript流程控制JavaScript数据类型JavaScript数组JavaScript运算符JavaScript正则表达式JavaScript字符串函数TypeScript简单示例JavaScriptJavaScriptBOM对......
  • SpringBoot整合JavaMail
    第一步:第二步: 第三步:第四步: ......
  • Java分布式框架之Dubbo
    分布式与微服务 1、传统架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。存在的问题:代码耦合,开发维护困难无法对不同模块进行针对性优化无法水平扩展单点容错率低,并......
  • JAVA 线程安全案例
    #线程安全案例##使用原子类来实现资源的安全保护```javapublicclassAtomicSafeExample{staticCountDownLatchcountDownLatch=newCountDownLatch(2);publicstaticvoidmain(String[]args)throwsInterruptedException{Threadthread=newThrea......
  • Java类加载原理中为何要设计双亲委派机制
    首先,给大家演示两个示例代码,我们自定义一个与Java核心类库中java.lang.String类名相同的代码:packagejava.lang;/***自定义java.lang.String类**@author编程老司机*@date2023-06-16*/publicclassString{static{System.out.println("加载自......