Java里到底是引用传递还是值传递

Java里 只要传参。传的就是变量存的值。而不是 变量本身的地址

 (传引用是指传变量本身的地址,注意是变量本身的地址!!!)

请百度  “引用传递” 看看百科是怎么解释这个概念的。

举个例子   Dog aDog = new Dog();

aDog本身有一个地址0001, 0001里存的是  类实例 (new Dog())的地址  1110。传参时如果传的是0001,那么传的就是引用,可惜传的是1110。 

这就是说传的是0001里存放的值!!!

这个问题国内外有很多优秀的文章和精彩的回答。这里有个经典的例子:点击打开链接

不过1110是类实例的地址,就是说 1110是对象new Dog()的引用。 

所以我们可以  说成是  “传的是对象的引用” 而不是  “变量本身的引用”。

这有点偷换概念的味道。  传值还是传引用   我们是针对
变量本身而言的。 传的是变量本身的地址,还是变量的值。 

因为我们问的是传参数的时候,传的是参数的引用还是参数的值?

说成是  “传的是对象的引用”有点牵强,答非所问。虽然的确没有说错,但是很容易让人误解。

时间: 2024-09-23 15:48:23

Java里到底是引用传递还是值传递的相关文章

理解Java中的引用传递和值传递

关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题,有论坛说Java中只有值传递,也有些地方说引用传递和值传递都存在,比较容易让人迷惑.关于值传递和引用传递其实需要分情况看待,今天学习和分析一下,着急可以先看最后的结论. >>基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型.相应的,变量也有两种类型:基本类型和引用类型. 基本类型的变量保存原始值,即它代表的值就是数值本身: 而引用类型的变量保存引用值,"引用值"指向内存空间

Java千百问_05面向对象(011)_引用传递和值传递有什么区别

1.什么是值传递 值传递,是将内存空间中某个存储单元中存放的值,传送给另一个存储单元.(Java中的存储单元并不是物理内存的地址,但具有相关性)  例如: //定义了一个改变参数值的函数 public static void changeValue(int x) {   x = x *2; } public class TestMain{ //调用该函数 int num = 5; System.out.println(num); changeValue(num); System.out.prin

String类型传递是值传递,char[]类型传递是引用传递的实现_java

如下所示: package com.lstc.test; public class TestDemo3 { String str = new String("hello"); char[] ch = { 'a', 'b' }; public static void main(String[] args) { TestDemo3 t = new TestDemo3(); t.change(t.str, t.ch);//String是封装类,是值传递,char数组是引用传递 System.

PHP数组传递是值传递而非引用传递概念纠正_php技巧

在调用函数时通过将PHP数组作为实参赋给形参,在函数中修改,并不会影响到数组本身. 说明此过程中的传递为值传递,数组变量并非是指向此数组本身的引用,PHP数组本身以值的形式存在,同时形参是对数组的拷贝. 这点与其他一些语言不同(如c.Js等)很不相同,值得注意! 复制代码 代码如下: $arr = array( 'name' => 'corn', 'age' => '24', ); test_arr($arr); function test_arr($arr){ $arr['name'] =

3个数从大到小排序用地址传递和值传递

问题描述 3个数从大到小排序用地址传递和值传递 3个数从大到小排序用地址传递和值传递(指针) 三个数从大到小分别用地址传递和值传递(指针) 解决方案 形参与实参,使用形参就是值传递方式,而实参则是地址传递. 解决方案二: 值传递排序后,他们的值不会改变 解决方案三: 说白了 就是 地址传递来排序就是 内存空间里 定义的这三个数它们不发生变化,用指针就相当于给它们贴标签,谁是第一谁是第二,指针按排序顺序逐个贴上标签.而值传递是,刚开始是乱序的,这三个数字的在内存里面的值要变化,是直接的比较.指针相

javascript数组与php数组的地址传递及值传递用法实例_php技巧

本文实例讲述了javascript数组与php数组的地址传递及值传递用法.分享给大家供大家参考.具体如下: javascript数组为地址传递/引用传递,而php数组为值传递 实例代码如下: 复制代码 代码如下: <?php $arr = array(3,9,4); function test($arr){  $arr[0] = 30; } test($arr); foreach($arr as $val){  echo $val." "; } ?> <script

webview-Android值传递 将值传递到oncreate方法中

问题描述 Android值传递 将值传递到oncreate方法中 将handler中解析出的值传递到同一activity种的oncreate方法中 public final Handler news_detailHandler = new Handler() {........ url = port.getString("url");这个值传递到oncreate中} protected void onCreate(Bundle savedInstanceState) { super.o

C#中的引用传递、值传递

一.传递参数 既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员(方法.属性.索引器.运算符和构造函数)更改参数的值,并保持该更改. 二.传递值类型参数 值类型变量直接包含其数据,这与引用类型变量不同,后者包含对其数据的引用.因此,向方法传递值类型变量意味着向方法传递变量的一个副本.方法内发生的对参数的更改对该变量中存储的原始数据无任何影响.如果希望所调用的方法更改参数的值,必须使用 ref 或 out 关键字通过引用传递该参数.为了简单起见,下面的示例使用 ref. 1. 通过值

JavaScript传递变量: 值传递?引用传递?_javascript技巧

当变量A赋值给变量B时,会将栈中的值复制一份到为新变量分配的空间中. 如何理解? 复制代码 代码如下: var x = y = 1; y = 2; alert(x); x的值为多少? 复制代码 代码如下: var obj = {}; var sub = {}; sub['id'] = 3; obj['sub'] = sub; sub['id'] = 4; alert(obj['sub']['id']); obj['sub']['id']的值又为多少?他们真的符合你的预期吗? 我们分别运行2段代码