`
zgqynx
  • 浏览: 1355737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java参数的值传递

    博客分类:
  • java
阅读更多
java参数的值传递
http://www.an-ping.com/forum/blog/detail.asp?blog_id=2&content_id=127
在java中,只有“值传递“一种参数传递方式。
1. 按值传递和按引用传递
          定义按值传递和按引用传递
这两个术语是重要的。按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。
2. 对象(object)与引用(reference)
       我们知道:
       A a = new A();
       产生一个A类型的对象,a是这个对象的的一个引用,即a指向heap中真正的对象,而a和其他基本数据类型 一起存放在stack中.也就是object通过reference操控,在底层的话,a更象一个指针.
3.一个帮助理解的例子:

public class PassTest {
	float ptValue;

	public void changeInt(int value) {
		value = 55;
	}

	public void changeStr(String value) {
		value = new String("different");
	}

	public void changeObjValue(PassTest ref) {
		ref.ptValue = 99f;
	}

	public static void main(String args[]) {
		String str;
		int val;
		PassTest pt = new PassTest();
		val = 11;
		pt.changeInt(val);
		System.out.println("Int value is: " + val);
		str = new String("Hello");
		pt.changeStr(str);
		System.out.println("Str value is: " + str);
		pt.ptValue = 101f;
		pt.changeObjValue(pt);
		System.out.println("Current ptValue is: " + pt.ptValue);
	}
}

这个程序最后输出的结果将是:

11

Hello

99f

对于int类型的参数11, 虽然改变了形参的值,但是实参却不改变,这同C语言中是一样的。
对于String 类型的变量 str,因为在java中String作为对象来处理,参考上面的分析,str是"hello"的一个引用(指针),按照值传递的说法value是str 的一个副件,因此也是一个引用。但是他经过value = new String ("different");被修改后value指向了一个新的对象。所以str所指的内容没有被改变。
        pt 是主函数中创建的PassTest的对象,通过传递它,就可以完成地址的传递,子函数中,ref与主函数的pt指向的其实是一个内存单元,那么修改 ref中的ptValue的值,也就是修改pt中的ptValue的值,即使没有最后的数据返回,这个数据也是会改变的。
        我们要记住,a只不过是对象的reference,而reference的复件与原来的reference指向的是同一个对象 我们对复件的操作,与对a的操作一样,最终还是对指向对象的操作,因此,java的参数,只有值传递.
分享到:
评论

相关推荐

    java参数传递

    这里详细的说明了,java参数传递的过程,引用传递,值传递

    Java:按值传递还是按引用传递详细解说

    在Java编程语言中,关于参数传递的方式一直存在两种观点:一种认为Java仅支持按值传递,另一种则指出Java同时支持按值传递和按引用传递。实际上,这两种观点并非完全对立,而是根据不同的角度来描述Java中的参数传递...

    Java参数传递PPT

    Java参数传递的规则是:**Java只使用值传递,但这种值传递对于对象参数表现为类似引用传递的行为。** 在值传递中,函数或方法接收的是原始数据类型(如int、double、boolean)参数的副本。例如,如果有一个方法...

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

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

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

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

    java值传递与引用传递

    在Java编程语言中,函数参数的传递方式有两种:值传递和引用传递。理解这两种机制对于编写高效、无误的代码至关重要。以下是对这两种传递方式的详细解析。 首先,值传递是指函数调用时,实际参数的值被复制一份传给...

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

    Java参数传递机制是一个常见的面试问题,它涉及到Java语言的基础特性。Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 ...

    java参数的传递与返回值

    ### Java参数的传递与返回值 #### 一、Java参数传递的基本概念 在Java中,方法(或称为函数)可以通过参数来接收外部的数据,并且能够返回处理后的结果。参数的传递方式主要有两种:值传递(Pass-by-value)和引用...

    Java是值传递,传对象引用也是通过值

    标题“Java是值传递,传对象引用也是通过值”揭示了Java中参数传递的核心概念。Java总是以值传递方式进行,这意味着当你将一个变量作为参数传递给方法时,传递的是该变量所存储值的一个副本。然而,对于对象类型的...

    java题的小总结按值传递还是地址传递

    在Java中,基本数据类型(如int、float、char等)的参数传递是按值传递。这意味着当一个方法被调用时,传入的参数是基本数据类型的副本。因此,方法内部对参数的任何改变不会影响到方法外部的原始变量。以下是一个...

    12.参数传递之值传递.zip

    12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值...

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

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

    Java参数传递的经典示例

    Java参数传递机制是编程中非常重要的概念,它涉及到基本类型和引用类型的差异。在Java中,参数传递主要有两种方式:值传递(Value Passing)和引用传递(Reference Passing)。虽然Java官方文档并未明确提及引用传递...

    java方法的参数传递其二.docx

    Java 方法参数传递是 Java 编程语言中的一种基本机制,在方法调用时将参数传递给方法体内的变量,但是在传递过程中,参数的类型会对传递结果产生影响。在本文中,我们将讨论 Java 方法参数传递中的引用类型传递。 ...

    JAVA反射参数传递概略

    在Java中,有两种基本的参数传递方式:值传递和引用传递。值传递是将变量的副本传递给方法,而引用传递则是传递变量指向的对象引用。对于基本类型,Java总是使用值传递;而对于对象,实际上是引用的复制,但仍然保持...

    java html 值传递

    在本教程中,我们将探讨如何在Java和HTML的结合中实现值传递,以便在网页上绘制圆圈,这对于初学者来说是一个很好的实践项目。 首先,我们要理解Java和HTML之间的交互。通常,这种交互是通过Servlet或JSP(Java...

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

    Java 面向对象值传递和引用传递 Java 面向对象编程中,参数传递是非常重要的一个概念。参数传递有两种方式:值传递和引用传递。了解这两种方式的区别是非常重要的,因为它们对程序的执行结果产生了很大的影响。 值...

    为什么Java只有值传递

    我们先看一下值传递和引用传递的概念和区别 值传递:是指在调用函数时将实际参数复制一份传递到函数中,...我们通过例子理解一下Java的值传递: public static void main(String[] args) { int a = 10; int b = 20;

    java 参数传递

    Java 中的参数传递机制,可以简单地总结为:基本类型作为参数传递时,是传递值的拷贝;对象作为参数传递时,是传递对象的引用。如果你在方法内改变了对象的值,那么原对象也跟着改变,但是如果你重新分配了对象的...

Global site tag (gtag.js) - Google Analytics