a.值传递: 如果参数类型是基本类型和String类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,如果在函数中改变了副本的 值不会改变原始的值.基本数据类型:byte,short,int,long,float,double,char,boolean;
b.引用传递:如果参数类型是引用类型或者数组类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。如果在函数中没有改变这个副本的地址,而是改变了地址中的值,那么在函数内的改变会影响到传入的参数。如果在函数中改变了副本的地址,那么副本就指向了一个新的地址,此时传入的参数还是指向原来的 地址,所以不会改变参数的值。
<!--EndFragment-->
值传递的代码实例:
/** *定义一个学生类 */ public class Student { /** * 学生的学习方法 */ public void study(int score){ //改变副本的值 score++; //输出改变后的值 System.out.println(score); } } /** *程序入口 */ public class Test { /** * 主函数 */ public static void main(String[] args) { //实例化一个学生对象 Student stu = new Student(); //给score初始化一个值 int score = 90; //对象stu调用学生类中的方法 stu.study(score); //输出的原始值不变 System.out.println(score); } }
引用传递代码实例1:
/** *定义一个学生类 */ public class Student { //定义属性 private String name; //给name赋值 public String getName() { return name; } //取name的值 public void setName(String name) { this.name = name; } } /** * 主函数 */ public static void main(String[] args) { //实例化一个学生对象 Student st = new Student(); st.setName("张三"); //再实例化一个学生对象 Student st1 = new Student(); st1.setName("李四"); //改变了st 的地址指向 st = st1; st.getName(); //输出结果 System.out.println(st.getName()); //改变了对象的属性 st1.setName(“王五”); //输出的是改变后的结果 System.out.println(st.getName()); } } 运行结果是:李四 王五
引用传递实例2:
/** *定义一个学生类 */ public class Student { //定义属性 private String name; //给name赋值 public String getName() { return name; } //取name的值 public void setName(String name) { this.name = name; } } /** *定义一个老师类 */ public class Teacher { /** * 老师教学生的方法 */ public void teach(Student st){ //传入的地址是st1的副本,所以指向st1; System.out.println("老师教"+st.getName()); } } /** *程序入口 */ public class Test { /** * 主函数 */ public static void main(String[] args) { //实例化一个学生对象 Student st = new Student(); st.setName("张三"); //再实例化一个学生对象 Student st1 = new Student(); st1.setName("李四"); //实例化一个老师对象 Teacher te = new Teacher(); //对象te调用Teacher类中的方法,传入参数st1; te.teach(st1); } } 运行结果是:老师教李四
<!--EndFragment-->
相关推荐
在编程语言中,值传递和引用传递是函数参数传递的两种基本方式,它们涉及到内存管理、数据安全以及程序效率等多个重要方面。这篇文章将深入探讨这两种传递方式,并通过内存解析来帮助理解它们的工作原理。 首先,...
另一方面,值传递由于形参和实参内存地址不一样,有些功能并不能实现(swap()),因此,除了极为简单的函数会使用值传递外,大多数会采用引用传递。而对于指针传递,则在涉及数组的情况下使用较多,因为指针本身会给...
在计算机编程中,值传递和引用传递是两种常见的参数传递方式。这两种传递方式在不同的编程语言中有不同的实现细节,但其核心概念是相似的。本文将详细介绍值传递和引用传递的概念、用法以及它们之间的区别,并通过...
在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点并非完全对立,而是根据不同的角度来描述Java中的参数传递...
- **基本类型参数传递的误解**:有些人可能认为基本类型参数的传递也是引用传递,但实际上是值传递。这意味着在方法内对参数的修改不会影响到原始变量。 - **引用类型参数传递的误解**:虽然传递的是引用,但这并不...
本文将重点讨论Java中方法调用时的基本类型和引用类型参数传递的区别,并通过具体的示例帮助读者更好地理解和掌握这一核心概念。 #### 学习目标 - **理解参数传递的基本原理**:了解Java方法调用过程中如何将参数...
在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。 首先,我们来理解什么是值传递。在Java中,基本数据类型(如int、double、...
在C#语言中,函数或方法的参数传递方式是一个重要的概念。本文将深入解析C#中涉及的几种关键...通过理解这些参数传递方式的区别,可以帮助开发者更灵活地处理程序中的变量传递问题,从而编写出更加高效和安全的代码。
在Java编程语言中,函数参数的传递方式有两种:值传递和引用传递。理解这两种机制对于编写高效、无误的代码至关重要。以下是对这两种传递方式的详细解析。 首先,值传递是指函数调用时,实际参数的值被复制一份传给...
13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....
Java 语言中参数值传递和引用传递是两种不同的参数传递方式,它们在 Java 编程中扮演着重要的角色。参数值传递是指将实际参数的值复制给形式参数,形式参数的变化不影响实际参数的值。引用传递是指将实际参数的引用...
参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值传递是指将实际的内存中的值传递给另外一个变量。例如,int a = 3; a 就指向了内存中的...
Delphi,作为一款基于Pascal语法的面向对象的编程环境,提供了两种主要的参数传递机制:值传递(ByValue)和引用传递(ByReference)。这两者在处理函数或方法的参数时有着显著的区别,对程序性能和数据安全有直接...
对于对象的参数传递,Java采用的是引用传递的方式。这意味着当你传递一个对象作为参数时,实际上是传递了对该对象的引用,而不是对象本身的副本。因此,在方法内部对这个对象所做的任何改变都会反映到原始对象上。 ...
Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 首先,我们来看值传递的理解。在Java中,当一个对象作为参数传递给方法时...
Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个主题的详细解释。 在Java中,所有的参数传递都是基于值的,但这涉及到一个...
总的来说,C++和C#在数据传递上都支持值传递和引用传递,但C++需要明确选择引用或指针来实现引用传递,而C#总是进行引用传递。数组和列表在两者的处理方式上有共同之处,但C++的`std::vector`更强调内存管理和性能...
### 浅析Java引用类型和方法参数传递 #### 一、引言 在Java编程语言中,理解数据类型的处理方式对于编写高效、可维护的代码至关重要。本文将深入探讨Java中的引用类型及其如何影响方法参数的传递机制。通过具体实例...