不少同学总是质疑java编程中参数的传递,到底是传值还是传引用?总是模棱两可,导致编程涉及到这方面时很苦恼,关于这个问题,我在这里记述一下我的理解,欢迎批评指正。
首先锁定一个根本方向:java中只有传值!
这里就有同学纳闷了,只有传值还要传引用这一说法干吗?为了便于理解,我们又可以这样说:
在java中,简单数据类型是按值传递的,对象是按引用传递的。。。晕,这人怎么说话颠三倒四的,唐僧了。。。。哈哈,莫急,听我慢慢道来。。。。
1. 所谓传值,压栈的是参数值的副本,是把实参的值赋值给形参,对形参的任何修改,都不会影响到实参的值;
2. 而传引用(类似于C中的指针),压栈的是引用的副本,是以地址的方式传递参数,传递以后,形参和实参都指向同一个对象,只是他们名字可能不同而已,对形参的修改将影响实参的值。
细心的看客应该意识到了,上边第2条中,引用的副本本身也是按值传递,所以,刚开始那种说法就通了——java中只有传值!
看过介绍,再结合下述例子看看是不是就懂了?
package com.test;
class Value {
int i = 10;
}
public class Test {
public static void main(String[] args) {
Test t = new Test();
Value v = new Value();
int i = 10;
System.out.println("a v.i = " + v.i + ", i = " + i);
t.test(v, i);
System.out.println("c v.i = " + v.i + ", i = " + i);
}
private void test(Value v, int i) {
v.i = 20;
i = 20;
System.out.println("b v.i = " + v.i + ", i = " + i);
}
}
输出结果为:
a v.i = 10, i = 10
b v.i = 20, i = 20
c v.i = 20, i = 10
分享到:
相关推荐
"java中传值还是传引用的认识" Java 中的参数传递是值传递还是引用传递?这是一个经常引发讨论的问题。在 Java 中,参数传递是按值传递的,也就是说,传递给方法的参数是一个副本,而不是原始值本身。 当一个对象...
在Java编程语言中,函数调用时的参数传递方式有两种:传值(Passing by Value)和传引用(Passing by Reference)。虽然Java官方文档中并未明确指出有传引用这一概念,但在实际操作中,Java的行为类似于传引用,尤其...
在Java中讨论传值还是传引用的问题,其实是源自C语言中的概念。Java中没有指针,因此不能直接谈论传引用的概念。正确的理解应该是:对于简单类型而言,传递的是值的副本;对于对象而言,传递的是指向对象的引用的...
### Java是传值还是传址引用 #### 一、简单类型是按值传递的 Java在处理简单数据类型(如int、boolean等)时采用的是按值传递的方式。这意味着当你将一个简单类型的值作为参数传递给一个方法时,实际上传递的是这...
Python中的参数传递并非简单的"传值"或"传引用",而是一种特殊的机制,通常被称为"传对象引用"。这意味着,当你将一个变量作为参数传递给函数时,实际上是传递了这个变量所引用的对象的引用,而不是对象的副本。 ...
JAVA传值与传引用[整理].pdf
当一个函数被调用时,可以通过不同的方式传递参数,其中最常见的是传值(call by value)和传引用(call by reference)两种方法。这两种方式在内存管理、性能影响以及数据修改能力上有着显著的不同。 #### 1. 传值调用...
本篇文章将详细探讨引用类型的传值方式。 首先,理解引用类型的概念至关重要。引用类型包括类(classes)、接口(interfaces)、数组以及委托(delegates),它们在内存中的存储方式与值类型截然不同。对于引用类型...
许多人认为对象是按引用传递,而实际上,Java总是按值传递,包括对象。这里的“值”指的是对象的引用,而不是对象本身。这与C++或C#等其他语言中对象的传递方式有所不同。 首先,我们需要理解Java中的引用概念。当...
在PHP编程中,理解变量的传值和传引用是非常重要的概念,它们决定了函数内部操作对原始变量的影响。下面我们将详细探讨这两个概念的区别、工作原理以及优缺点。 **1. PHP传值** 当一个变量作为参数传递给函数时,...
vue组件在prop里根据type决定传值还是传引用。 简要如下: 传值:String、Number、Boolean 传引用:Array、Object 若想将数组或对象类型也以值形式传递怎么办呢?如下方式可以实现: // component-A 引用component-...
"Java中的传值与传引用实现过程解析" Java中的传值与传引用是Java编程语言中的一种基础概念,它们是Java函数中参数传递的两种方式。 Java中的传值是指函数参数的值被复制到函数内部,在函数内部对参数的修改不会...
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用...
在编程世界中,传值和传引用是两个基础但至关重要的概念,它们直接影响着程序的运行方式和数据处理。在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)这种图形化编程语言中,理解这两个概念对于...
在计算机编程领域,特别是对于面向对象语言如Java而言,“传值”与“传引用”的概念是理解数据传递机制的关键所在。Java作为一种广泛使用的高级编程语言,在设计之初就考虑到了如何避免C/C++等语言中的复杂性,特别...
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用...
在Java编程语言中,方法参数传递机制涉及到两个主要概念:传值和传引用。了解这两个概念对于编写高效、可靠的代码至关重要。本篇文章将深入探讨Java中的方法传值和传引用问题。 首先,让我们理解什么是传值。在Java...
总结起来,理解传值、传名(或传引用)和传地址的异同是编程基础的重要组成部分。它们影响着函数的可读性、效率以及程序的行为。在编写代码时,根据具体需求选择合适的参数传递方式,是提升代码质量的关键。