`
李亦鸿
  • 浏览: 11749 次
  • 性别: Icon_minigender_1
  • 来自: 海南
社区版块
存档分类
最新评论
  • baiyj71: quiz的例子因为浏览器版本的问题会出现报错,需要在smoke ...
    smoke.js

参数传递-值传递和引用传递

阅读更多

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-->

分享到:
评论

相关推荐

    Delphi值传递和引用传递实例

    Delphi,作为一款基于Pascal语法的面向对象的编程环境,提供了两种主要的参数传递机制:值传递(ByValue)和引用传递(ByReference)。这两者在处理函数或方法的参数时有着显著的区别,对程序性能和数据安全有直接...

    值传递与引用传递-内存解析

    在编程语言中,值传递和引用传递是函数参数传递的两种基本方式,它们涉及到内存管理、数据安全以及程序效率等多个重要方面。这篇文章将深入探讨这两种传递方式,并通过内存解析来帮助理解它们的工作原理。 首先,...

    Java零基础-参数传递-1.md

    读者将学习Java中方法调用时的参数传递方式,并分别介绍基本类型和引用类型在参数传递过程中的特点和区别。 能学到什么: 学习Java中方法调用时的参数传递方式。 理解基本类型和引用类型在参数传递过程中的特点和...

    Java零基础-参数传递-2.md

    读者将学习Java中方法调用时的参数传递方式,并重点探讨基本类型和引用类型在参数传递过程中的特点和区别。此外,我们还将介绍可变参数和返回值的使用方法。 能学到什么: 学习Java中方法调用时的参数传递方式。 ...

    java 值传递和引用传递的比较

    在Java编程语言中,了解值传递和引用传递的概念至关重要,因为它们直接影响到函数参数的处理方式。下面将详细探讨这两个概念及其区别。 首先,我们来理解什么是值传递。在Java中,基本数据类型(如int、double、...

    13.java参数传递之引用传递.zip

    13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....

    Java语言中参数值传递和引用传递比较.pdf

    Java 语言中参数值传递和引用传递是两种不同的参数传递方式,它们在 Java 编程中扮演着重要的角色。参数值传递是指将实际参数的值复制给形式参数,形式参数的变化不影响实际参数的值。引用传递是指将实际参数的引用...

    Java面向对象值传递和引用传递

    参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值传递是指将实际的内存中的值传递给另外一个变量。例如,int a = 3; a 就指向了内存中的...

    值传递与地址传递的区别

    值传递与地址传递的区别 值传递是一种函数参数传递方式,...值传递、地址传递和引用传递是三种不同的函数参数传递方式,每种方式都有其特点和应用场景。理解这些方式的区别是非常重要的,以便在编程中正确地使用它们。

    java参数传递时到底是值传递还是引用传递分享.pdf

    Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 首先,我们来看值传递的理解。在Java中,当一个对象作为参数传递给方法时...

    java参数传递时到底是值传递还是引用传递[归类].pdf

    Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个主题的详细解释。 在Java中,所有的参数传递都是基于值的,但这涉及到一个...

    c#参数传递c#参数传递

    C#支持两种基本的参数传递方式:值传递和引用传递。下面我们将深入探讨这两种方式以及它们在实际编程中的应用。 1. 值传递: 值传递是最常见的参数传递方式,当函数被调用时,实参的副本被复制到形参中。这意味着对...

    Java的引用和函数参数传递

    Java的引用和函数参数传递Java的引用和函数参数传递Java的引用和函数参数传递Java的引用和函数参数传递

    C#笔记值传递和引用传递

    在C#编程语言中,了解值传递和引用传递的概念至关重要,因为这直接影响到函数或方法如何处理参数。本文主要探讨这两个概念以及与之相关的知识点。 首先,值传递是指当一个方法或函数调用时,实际参数(即调用时提供...

    参数的传递方式-ppt

    掌握参数的两种传递方式的(值传递和引用传递) 基本数据类型作为参数 类的对象作为参数 数组作为参数 String类作为参数

    java值传递与引用传递

    不管是按值传递还是按引用传递,都是把栈中的数据备份了一份给参数变量,只不过值类型备份的是具体的数值,而引用类型备份的是内存地址

    62.java引用类型的参数传递.zip

    62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递.zip62.java引用类型的参数传递....

    面向对象语言中的值传递与引用传递

    面向对象编程语言中,参数传递主要有两种方式:值传递和引用传递。这两种方式在Java这样的语言中有着明显的区别,理解它们对于编写高效、无误的代码至关重要。 **值传递**: 值传递是Java中处理基本数据类型(如int...

    kettle实现多参数传递并且循环加载数据.zip

    本项目"Kettle实现多参数传递并且循环加载数据.zip"显然是一个利用Kettle解决复杂业务逻辑的示例,特别关注了参数传递和数据的循环处理。以下将详细解释相关知识点。 1. **Kettle参数传递**: 在Kettle中,参数...

Global site tag (gtag.js) - Google Analytics