详解java的值传递、地址传递、引用传递

1. 值传递

值传递是指在方法调用过程中,实际传递的是变量的值,如果传递的是基本数据类型或者不可改变的对象,则不会改变原有变量的值。这是Java中的默认传递方式。

示例1:

public class ValuePassingExample{
    public static void main(String[] args) {
        int originalValue = 10;
        System.out.println("Original Value: " + originalValue);
        changeValue(originalValue);
        System.out.println("Modified Value: " + originalValue);
    }

    private static void changeValue(int num) {
        num = num + 5;
        System.out.println("Value Changed: " + num);
    }
}

输出结果:

Original Value: 10
Value Changed: 15
Modified Value: 10

从上面的示例可以看出,在方法调用changeValue()方法之前,原始的变量originalValue的值为10。在调用方法changeValue()时,将原始变量的值传递给了形参num。而在方法中对num变量的操作不会影响到原始变量的值,也就是说,原始变量originalValue的值保持不变。

2. 引用传递

引用传递是指在方法调用过程中,实际传递的是对象的引用,修改引用对象的属性值,会对原始对象的属性值产生改变,但是不能让引用参数"指向"另外一个对象。

示例2:

public class ReferencePassingExample {
    public static void main(String[] args) {
        StringBuilder originalName = new StringBuilder("David");
        System.out.println("Original Name: " + originalName);
        changeName(originalName);
        System.out.println("Modified Name: " + originalName);
    }

    private static void changeName(StringBuilder name) {
        name.append(" Smith");
        System.out.println("Name Changed: " + name);
    }
}

输出结果:

Original Name: David
Name Changed: David Smith
Modified Name: David Smith

从上面的示例可以看出,在方法调用changeName()方法之前,原始变量originalName引用指向了一个String类型的对象"Davis"。在调用方法changeName()时,将原始变量的引用传递给了形参name,形参name指向了原有的对象"Davis"。在方法中对name对象的属性进行了修改,即在"Davis"后面追加了一个" Smith",此时原始变量originalName与name引用都指向了修改后的对象"David Smith"。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解java的值传递、地址传递、引用传递 - Python技术站

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

相关文章

  • 如何使用JDBC连接数据库并执行SQL语句

    下面是如何使用JDBC连接数据库并执行SQL语句的完整攻略: 一、引入JDBC驱动 在Java程序中使用JDBC(Java DataBase Connectivity)需要先引入JDBC驱动。不同的数据库所对应的驱动不同,这里以MySQL为例: <!– 在项目的pom文件中添加MySQL驱动的依赖 –> <dependency> …

    Java 2023年5月20日
    00
  • 基于javaweb+jsp实现个人日记管理系统

    让我来详细解析一下“基于javaweb+jsp实现个人日记管理系统”的攻略吧。首先,我们需要了解这个系统的基本要素:JavaWeb以及JSP。 一、JavaWeb JavaWeb是指基于Java语言所开发的Web应用程序,在软件开发工程中,开发人员可以使用JavaWeb技术,实现分布式系统的实现。JavaWeb技术是建立在Java平台之上的,包含许多组件,例…

    Java 2023年5月20日
    00
  • Java DatabaseMetaData用法案例详解

    Java DatabaseMetaData用法案例详解 Java DatabaseMetaData是Java JDBC API中的一个重要接口,允许您检索数据库的元数据信息,例如表和列的结构信息、索引和约束信息等。在开发Java应用程序时,您有时需要使用JDBC和DatabaseMetaData API来获取数据库的元数据信息。在本文中,我们将讨论Java …

    Java 2023年5月19日
    00
  • Java中使用Lambda表达式和函数编程示例

    下面是Java中使用Lambda表达式和函数编程的完整攻略。 什么是Lambda表达式 Lambda表达式是Java8引入的新特性。它使得开发人员可以更直观地使用函数编程来处理数据。Lambda表达式是一个匿名函数,可以传递给方法作为参数。它的语法非常简洁,使用一个箭头“->”来分隔函数的参数列表和函数体。 下面是一个使用Lambda表达式的函数式接口…

    Java 2023年5月19日
    00
  • 浅析Java中JSONObject和JSONArray使用

    浅析Java中JSONObject和JSONArray使用 在Java中,我们经常需要处理JSON数据。其中,JSONObject和JSONArray是Java中最常用的两种处理JSON数据的类。本文将为大家介绍JSONObject和JSONArray的基本使用方法和实例,希望对大家有所帮助。 JSONObject的使用 JSONObject是一个类,它表示…

    Java 2023年5月19日
    00
  • 微信小程序 免费SSL证书https、TLS版本问题的解决办法

    针对“微信小程序 免费SSL证书https、TLS版本问题的解决办法”,我提供如下完整攻略。 什么是SSL证书和TLS版本 SSL证书可以理解为电子商务网站的身份证,用于证明网站的身份,并通过加密通讯来保护信息不被窃取。而TLS是SSL的升级版本,用于加密网络连接,并确保数据的完整性和机密性。 微信小程序使用SSL证书和TLS版本的必要性 微信小程序要求所有…

    Java 2023年5月23日
    00
  • JAVA 格式化日期、时间的方法

    有关 JAVA 格式化日期、时间的方法,可以使用 SimpleDateformat 类和 Date 类一起使用来实现。下面是详细的攻略: 1. SimpleDateformat 格式化日期 SimpleDateFormat 类是 JAVA 中的一个日期格式化类。使用此类可以按照指定的格式来格式化一个日期字符串,具体使用方法如下: import java.te…

    Java 2023年5月20日
    00
  • Java Stopwatch类,性能与时间计时器案例详解

    Java Stopwatch类,性能与时间计时器案例详解 在Java开发中,我们有时候需要统计代码的执行时间及性能等指标信息,这时候我们可以使用Java中的Stopwatch类来实现。本文将详细讲解Stopwatch类的使用以及示例。 1. Stopwatch类的使用 Stopwatch类是Google Guava库中提供的计时器类,可以实现启动、停止和恢复…

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