ZKX's LAB

类类型 引用传递 引用类型传递与值传递

2020-07-24知识2

\ String 是 引用类型,除了 你说的那几个基本类型外 都是 引用类型拷贝 的时候也是引用的地址,不光拷贝 使用的时候 都是先找地址。去api看看,可以看到public final class Stringextends Objectimplements SerializableString 是个类。数据类型,值传递和引用传递有什么区别,String是什么传递? 你学过C或者C++吗?这两个概念是从C/C++延续过来的,就类似于C里面的值传递和指针传递。在java中除了基本类型(Integer/Float/Double等)和String类的对象外,所有的类对象引用都是引用传递,也就是传递的对象地址。所谓值传递就是传递的值的拷贝,而不是原来的值,比如public static void main(String[]args){int a=10;int b=20;int c=add(a,b);System.out.println(\"a=\"+a+\",b=\"+b+\",c=\"+c);}private static int add(int a,int b){a=20;b=30;return a+b;}输出:a=10,b=20,c=50这就是所谓值传递,在被调方法中改变参数值不会影响主调方法中定义的变量的值如果你将a、b定义为Student类的对象,然后在add方法中改变参数里面的值,那么主调方法main中的a、b变量将跟着发生改变,就是所谓引用传递C# 关于引用类型传递的问题,怎么会这样? 原来是学C++的吧?Net的引用和C++不怎么一样,C++的引用是对象的别名,而.Net的引用只是一种隐式的指针。比如,string s=new string();s是指向新创建的这个string对象的一个引用string p=s;把s赋给p,那么p就指向和s一样的地址p=null;把空引用赋给p,那么p以后就指向null,但s并不会因此改变所以啊,.Net的引用其实就是隐式的指针,这么理解就可以了接着回过来看你的例子,只要修改一下就能达到你想要的效果加上ref关键字static public void K(ref A i){i=null;}调用的时候也是A.K(ref l);l.Q(ref l);

随机阅读

qrcode
访问手机版