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日

相关文章

  • Java Runtime类详解_动力节点Java学院整理

    这里是针对“Java Runtime类详解_动力节点Java学院整理”的完整攻略。 什么是Java Runtime类? Java Runtime类是Java程序运行环境的一部分。它提供了许多重要的运行时方法,例如在程序运行时执行其他程序、获取JVM的空闲内存量、强制垃圾回收等。本身是一个单例类,通过获取 Runtime.getRuntime() 实例获得。 …

    Java 2023年5月20日
    00
  • 简单了解java ibatis #及$的区别和用法

    下面是关于“简单了解java ibatis #及$的区别和用法”的完整攻略: 什么是Java iBatis? Java iBatis(也称MyBatis)是一种Java持久层框架,它可以将Java对数据库的访问和操作抽象出来,使得Java程序员可以更加方便地访问和操作数据库。而“#”和“$”是Java iBatis中常用的参数占位符,用于动态地替换SQL语句…

    Java 2023年5月20日
    00
  • jsp页面使用${}不起作用的解决方法

    当jsp页面中使用${}时,如果无法起作用,通常有以下几个解决方案: 1. 检查EL表达式是否正确 ${}是jsp页面中EL表达式的语法,用于在jsp页面中展示数据。如果${}不起作用,首先需要检查表达式是否正确。正确的表达式应该是以${ }开头和结尾,中间包含一个变量。例如:${variable}。 如果表达式正确,但仍然无法展示数据,那就需要检查下一个解…

    Java 2023年6月15日
    00
  • SpringMVC的执行流程及组件详解

    以下是关于“SpringMVC的执行流程及组件详解”的完整攻略,其中包含两个示例。 SpringMVC的执行流程及组件详解 SpringMVC是一个基于MVC模式的Web框架,它可以帮助我们快速开发Web应用程序。本文将介绍SpringMVC的执行流程及组件详解,并提供两个示例。 SpringMVC的执行流程 SpringMVC的执行流程可以分为以下几个步骤…

    Java 2023年5月16日
    00
  • Java Kafka实现延迟队列的示例代码

    下面我来详细讲解Java Kafka实现延迟队列的示例代码的完整攻略。 什么是延迟队列 延迟队列是一种可以在一段时间之后才能被消费者消费的消息队列。它通常会使用时间优先级来控制消息的消费顺序,这种机制被称为TTL(Time To Live)。常见的应用场景是延迟发送提醒、定时任务等。 实现延迟队列的方式 实现延迟队列的方式有很多种,Kafka也提供了两种实现…

    Java 2023年6月2日
    00
  • struts2中使用注解配置Action方法详解

    请按照以下步骤详细讲解”struts2中使用注解配置Action方法的完整攻略”: 1. 确认环境 首先,你需要确保你的项目已经集成了Struts2框架。同时,你需要了解Action类和方法的基本概念,并且熟悉Java注解的基础知识。 2. 创建Action类 创建一个继承ActionSupport类的Action类,并且对于需要访问的Action方法添加相…

    Java 2023年5月20日
    00
  • Java 常见的几种内存溢出异常的原因及解决

    Java 常见的几种内存溢出异常的原因及解决 简介 Java 是一门内存管理的语言,它自带了垃圾回收器能够自动地清理无用对象以释放内存空间。但是,在一些特定情况下(如长时间运行、大量对象创建等),Java 应用程序可能会出现内存溢出的异常,导致程序崩溃。这篇文章将会讲解 Java 中常见的几种内存溢出异常的原因及解决方法。 原因及解决方法 堆溢出 堆是 Ja…

    Java 2023年5月28日
    00
  • Java+mysql实现学籍管理系统

    Java+MySQL实现学籍管理系统攻略 1. 系统功能说明 本学籍管理系统主要实现以下功能: 新增学生信息:添加学生姓名、性别、出生日期、身份证号、联系方式等信息; 修改学生信息:修改已有学生信息; 删除学生信息:删除已有学生信息; 查询学生信息:通过学生姓名或者身份证号来查询学生信息; 统计学生数量:统计已有学生的数量。 2. 开发环境和工具 开发平台:…

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