Java的引用类型常用的四种方法

Java的引用类型常用的四种方法包含:按值传递、按引用传递、按可变长数组传递、按包装类传递。接下来我会结合示例详细介绍这四种方法。

按值传递

按值传递是将方法外部的值复制到方法内部,在方法中操作该值,但不会对原始值造成影响。示例代码如下:

public class Main {
    public static void main(String[] args) {
        int a = 10;
        change(a);
        System.out.println(a); // Output: 10
    }

    public static void change(int b) {
        b = 20;
    }
}

在上面的示例中,我们定义了一个 change 方法,该方法按值传递一个 b 参数。在方法内部将 b 的值修改为 20,但是在 main 方法中输出 a 的值仍为 10,说明按值传递没有改变原始值。

按引用传递

按引用传递是将方法外部的对象的引用复制到方法内部,传递的是实际地址,方法内部操作该引用所指向的对象,如果对该对象做出更改,那么将影响到原始的对象。示例代码如下:

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        change(sb);
        System.out.println(sb.toString()); // Output: Hello world
    }

    public static void change(StringBuilder s) {
        s.append(" world");
    }
}

在上面的示例中,我们定义了一个 change 方法,该方法按引用传递一个 s 参数。在方法内部将 s 的值修改为 Hello world,在 main 方法中输出 sb.toString() 的值为 Hello world,说明按引用传递改变了原始对象。

按可变长数组传递

按可变长数组传递是指将传递给方法的数组复制一份,变成可变长数组,复制后在方法中进行操作,如果对复制的可变长数组做出更改,那么将不会对原始数组产生影响。示例代码如下:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        change(arr);
        System.out.println(Arrays.toString(arr)); // Output: [1, 2, 3]
    }

    public static void change(int[] arr) {
        arr = Arrays.copyOf(arr, arr.length + 1);
        arr[arr.length - 1] = 4;
    }
}

在上面的示例中,我们定义了一个 change 方法,该方法按可变长数组传递一个 arr 参数。在方法内部将 arr 数组扩充为 [1, 2, 3, 4],在 main 方法中输出 Arrays.toString(arr) 的值为 [1, 2, 3],说明按可变长数组传递没有改变原始值。

按包装类传递

按包装类传递是指将基本数据类型包装成对象传递给方法,由于对象是引用类型,所以传递的是对象的引用,能够改变原始的对象。示例代码如下:

public class Main {
    public static void main(String[] args) {
        Integer a = 10;
        change(a);
        System.out.println(a); // Output: 20
    }

    public static void change(Integer b) {
        b = 20;
    }
}

在上面的示例中,我们定义了一个 change 方法,该方法按包装类传递一个 b 参数。在方法内部将 b 的值修改为 20,在 main 方法中输出 a 的值为 20,说明按包装类传递改变了原始对象。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的引用类型常用的四种方法 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • ASP.NET+Web服务实现软件共享

    ASP.NET是一种基于微软的.NET框架的Web开发技术,可以用来开发Web应用程序和Web服务。Web服务是一种通过网络调用的应用程序,可以与不同的平台和语言进行交互。因此,使用ASP.NET和Web服务可以实现软件的共享,方便多个平台和语言之间的数据传输和交互。 以下是实现软件共享的ASP.NET+Web服务攻略: 创建Web服务 首先需要创建一个AS…

    Java 2023年6月15日
    00
  • SpringMVC实现文件的上传和下载实例代码

    SpringMVC实现文件的上传和下载实例代码 在Web应用程序中,文件的上传和下载是非常常见的需求。SpringMVC提供了很多方便的方式来实现文件的上传和下载。本文将详细讲解SpringMVC实现文件的上传和下载的实例代码。 文件上传 在SpringMVC中,我们可以使用MultipartFile对象来处理文件上传。MultipartFile对象是Spr…

    Java 2023年5月18日
    00
  • java命令执行jar包的多种方法(四种方法)

    下面是详细讲解“java命令执行jar包的多种方法(四种方法)”的完整攻略。 一、使用java -jar命令运行jar包 将jar包放到一个单独的目录中,并在命令行中进入该目录。 使用以下命令来运行jar包: java -jar example.jar 其中example.jar是要运行的jar包的名称。 如果需要传递参数,则可以在命令中添加它们,例如: j…

    Java 2023年5月19日
    00
  • Java全局异常处理器实现过程解析

    Java全局异常处理器实现过程解析 在Java开发中,异常处理是一个重要的话题。在程序运行时,如果发生异常,则需要对其进行处理以避免程序崩溃。为了方便管理和处理程序中的异常,开发人员可以通过实现全局异常处理器来捕获并处理程序中的异常。以下是Java全局异常处理器实现过程的详细攻略。 1. 实现ExceptionHandler接口 Java提供了Excepti…

    Java 2023年5月27日
    00
  • 关于json序列化(javaBean转Json的细节处理)

    关于json序列化(javaBean转Json的细节处理)的攻略,我将会从以下几个方面进行讲解: 什么是Json序列化 如何进行Json序列化 JavaBean转Json的细节处理 什么是Json序列化 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由于其简洁性、易于读写和解析、支持多种语言等特性,已经成为了互联…

    Java 2023年5月26日
    00
  • Java日期时间以及日期相互转换

    下面是关于Java日期时间以及日期相互转换的完整攻略: Java日期时间 Java提供了许多有关日期和时间的类,其中一些是java.util.Date,java.util.Calendar和java.time.LocalDate和java.time.LocalDateTime。 在本文中,我们将学习如何使用这些类来处理日期和时间。 Java.util.Dat…

    Java 2023年5月20日
    00
  • 小程序获取用户信息的两种方法详解(getUserProfile和头像昵称填写)

    小程序获取用户信息的两种方法包括getUserProfile和头像昵称填写。下面将详细讲解这两种方法的使用攻略和示例说明。 getUserProfile方法详解 什么是getUserProfile? getUserProfile是一种小程序的API,可以获取到用户的个人信息,包括昵称、头像、性别等。 如何使用getUserProfile? getUserPr…

    Java 2023年5月23日
    00
  • Java如何基于poi操作Wold工具类

    下面是Java基于poi操作Word的完整攻略。 1. 简介 Apache POI是一个为Microsoft Office格式(如.docx和.xlsx)提供Java API的开源项目,其中包括对Word文档的操作。本攻略将重点介绍Java如何基于poi操作Word的方法。 2. 准备工作 在进行poi操作Word之前,需要先下载poi包,并导入到项目中。 …

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部