精华内容
下载资源
问答
  • 10.什么是值传递和引用传递?    对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响 源对象的值。    对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,...

    10.什么是值传递和引用传递? 
     
    对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响 源对象的值。 
     
    对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用。因此,外部对引用对 象所做的改变会反映到所有的对象上。 

    展开全文
  • 【JAVA】 什么是值传递和引用传递

    万次阅读 多人点赞 2019-06-04 11:10:05
    一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递 首先,不要纠结于 Pass By Value Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上...

    值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.
    引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。
    一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递

    首先,不要纠结于 Pass By Value 和 Pass By Reference 的字面上的意义,否则很容易陷入所谓的“一切传引用其实本质上是传值”这种并不能解决问题无意义论战中。
    更何况,要想知道Java到底是传值还是传引用,起码你要先知道传值和传引用的准确含义吧?可是如果你已经知道了这两个名字的准确含义,那么你自己就能判断Java到底是传值还是传引用。
    这就好像用大学的名词来解释高中的题目,对于初学者根本没有任何意义。

    一:搞清楚 基本类型 和 引用类型的不同之处

    int num = 10;
    String str = "hello";
    

    在这里插入图片描述
    如图所示,num是基本类型,值就直接保存在变量中。而str是引用类型,变量中保存的只是实际对象的地址。一般称这种变量为"引用",引用指向实际对象,实际对象中保存着内容。

    二:搞清楚赋值运算符(=)的作用

    num = 20;
    str = "java";
    

    对于基本类型 num ,赋值运算符会直接改变变量的值,原来的值被覆盖掉。
    对于引用类型 str,赋值运算符会改变引用中所保存的地址,原来的地址被覆盖掉。但是原来的对象不会被改变(重要)。
    如上图所示,“hello” 字符串对象没有被改变。(没有被任何引用所指向的对象是垃圾,会被垃圾回收器回收)
    在这里插入图片描述

    三:调用方法时发生了什么?参数传递基本上就是赋值操作。

    链接:https://www.nowcoder.com/questionTerminal/b296e9e1c40542ec8677c1e452b6b576
    来源:牛客网

    第一个例子:基本类型

    void foo(int value) {
        value = 100;
    }
    foo(num); // num 没有被改变
    

    第二个例子:没有提供改变自身方法的引用类型

    void foo(String text) {
        text = "windows";
    }
    foo(str); // str 也没有被改变
    

    第三个例子:提供了改变自身方法的引用类型

    StringBuilder sb = new StringBuilder("iphone");
    void foo(StringBuilder builder) {
        builder.append("4");
    }
    foo(sb); // sb 被改变了,变成了"iphone4"。
    

    第四个例子:提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。

    StringBuilder sb = new StringBuilder("iphone");
    void foo(StringBuilder builder) {
        builder = new StringBuilder("ipad");
    }
    foo(sb); // sb 没有被改变,还是 "iphone"。
    

    重点理解为什么,第三个例子和第四个例子结果不同?

    下面是第三个例子的图解:
    在这里插入图片描述
    builder.append(“4”)之后
    在这里插入图片描述
    下面是第四个例子的图解
    在这里插入图片描述
    builder = new StringBuilder(“ipad”); 之后
    在这里插入图片描述

    展开全文
  • 值传递 值传递一般是基本数据类型的传递,传递的是该变量的一个...一般情况下,Java内的基本数据类型的传递都是值传递,Java内的引用数据类型的传递都是引用传递。 转载于:https://www.cnblogs.com/Freak-Lew/p/9...

    值传递

    值传递一般是基本数据类型的传递,传递的是该变量的一个副本,改变副本不影响原变量。

     

    引用传递

    引用传徒一般是引用数据类型的传递,传递的是该对象地址的一个副本,并且不是原对象本身。

     

    一般情况下,Java内的基本数据类型的传递都是值传递,Java内的引用数据类型的传递都是引用传递。

    转载于:https://www.cnblogs.com/Freak-Lew/p/9193081.html

    展开全文
  • 什么是值传递和引用传递?

    千次阅读 2018-08-14 08:10:16
    关于值类型与引用类型,值传递引用传递的归纳,总结一下,分享给大家: 一、值类型与引用类型 1.堆栈中的存放: <1>值类型默认存放在栈中,但当值类型在引用类型中声明的时候,则存放在其所在...

    关于值类型与引用类型,值传递与引用传递的归纳,总结一下,分享给大家:

    一、值类型与引用类型

    1.堆栈中的存放:

    <1>值类型默认存放在栈中,但当值类型是在引用类型中声明的时候,则存放在其所在的引用类型的堆中。

    <2>引用类型存放在堆中,其在堆中的内存地址放在栈中。

                           

    2.参数传递方式:

    <1>值类型参数可以值传递,也可以通过ref、out关键字修饰,进行引用传递。

    <2>引用类型参数只能以引用传递方式传递。

    二、值传递与引用传递

    1.值传递

    值传递:方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

                                  

    代码如下:

    class Program
        {
            public static void Main(string[] args)
            {
                int a = 1;
                Test(a);
                Console.WriteLine(a);
                
                Console.Write("Press any key to continue . . . ");
                Console.ReadKey(true);
            }
            
            //值传递
            static void Test(int a)
            {
                a++;
            }
        }
    
    
        结果:1

    2.引用传递

    引用传递:也称为传地址。方法调用时,实际参数是对象(或者数组),这是实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际是就是对实际参数的操作,这个结果在方法结束后,被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

                                    

    代码如下:

    class Program
        {
            public static void Main(string[] args)
            {
                int a = 1;
                Person p=new Person{Age=20};
                //通过ref关键字,对值类型变量a进行引用传递
                Test(ref a,p);
                Console.WriteLine(a);
                Console.WriteLine(p.Age);
                
                Console.Write("Press any key to continue . . . ");
                Console.ReadKey(true);
            }
            
            //引用传递
            static void Test(ref int a,Person p)
            {
                a++;
                p.Age++;
            }
            
        }
        
        class Person
        {
            public int Age{get;set;}
        }
    
    
        结果:2

    作者:Roger_CoderLife

    链接:https:blog.csdn.net/Roger_CoderLife/article/details/81563761

    本文为Roger_CoderLife的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

    展开全文
  • 值传递:不可变数据类型在函数内部修改后,源值不会发生变化 引用传递:可变数据类型在函数内部修改后,源值会发生变化 具体看代码: a = 123 #a为不可变数据类型 b = {'name1':'right','name2':"Lau"} #b为可变数据...
  • 1.值传递和引用传递什么意思? 对于基本数据类型,传递的是值 对于引用数据类型,传递的是内存地址 package season7; import java.util.Arrays; public class TestZhiChuangDi { public static void main(String...
  • 值传递: 值传递是对基本型变量而言的,传递的是一个变量的副本,改变副本不影响原变量。 引用传递引用传递一般是对对象(引用)型变量而言的,传递的是该对象地址的一个副本,...一般java内的传递都是值传递 ...
  • 学过java基础的人都知道,在java中参数的传递过程中有值传递和应用传递,那么这两个到底有什么区别呢,下面我通过例子为大家详细的介绍下。 我们都知道Java中有八种数据类型,基础数据类型分别:byte,short,int...
  • 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量. 引用传递一般是对于对象型变量而言的,传递的是该...一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递 ...
  • 学过java基础的人都知道,在java中参数的传递过程中有值传递和应用传递,那么这两个到底有什么区别呢,下面我通过例子为大家详细的介绍下。我们都知道Java中有八种数据类型,基础数据类型分别:byte,short,int,...
  • 什么是值传递,什么是引用传递呢?在深入了解这个问题之前,我们先通过一段代码来看看:public class Main { public static void main(String[] args) { int c = 2; //c 叫做实参 User user = new User(); //...
  • 一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递。值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。引用传递一般是对于对象型变量而言的,传递的是该...
  • 一般认为,java内的传递都是值传递. java中实例对象的传递是引用传递 。 (关注Java刘老师,共同学习) -------解释如下: 值传递:指的是在方法调用时,传递的是参数是按值的拷贝传递。 特点:传递的是值的拷...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,368
精华内容 947
关键字:

什么是值传递和引用传递