java的引用

来源:百度知道 编辑:UC知道 时间:2024/06/02 15:48:36
java的引用存储的是内存地址,就相当于是一个指针。不管什么类型的对象就是这样,那为什么不能相互的赋值呢?譬如 ClassA A1=new ClassA();
ClassB B1=ClassB(); A1和B1为什么不能相互赋值呢???
修改为ClassB B1=new ClassB();

同样new返回的是内存地址,然后赋给引用变量,为什么不能赋值。希望大家能看清楚了再回答。

首先,你写classB你写漏了个new关键字

可以互相赋值的,参照如下:
ClassA A1=new ClassA();
ClassB B1;
B1=A1;

String str1=new String("abcdefg");
String str2=str1;
这个不就是相互赋值??
System.out.println(str1);
System.out.println(str2);

ClassB B1=ClassB();
这是什么?你的ClassB都没有被实例化,B1去引用谁,应该是ClassB B1=ClassA();
这样是可以的.

男人要取男人名字,女人要取女人名字,。都是名字,

为啥男人一般不愿意取个女人名字呢 ??

JAVA 中的 引用存储, 确实是一个指针(地址)的值传递,

但是 对于 一个对象而言,由于其所属的 类 中封装了 特定的方法 和 属性。

所以在传递过程中必须要求类型匹配。

假如: ClassB B1=new ClassA();
那你说, 我们现在 应该 把 B1 当做哪个类来使用?
我们能用 B1 来调用 ClassA 中的方法吗?
如果可以 干脆 直接 写成 ClassA B1=new ClassA(); 不就好了吗?
如果 用 B1 来调用 ClassB 中的方法,也是说不通的。当调用 ClassB 的私有属性时,根据指针找到 new ClassA() 相应的首地址,然后,再找到对应的属性的地址,根据属性大小进行取值,你认为取出来的值能用吗?有意义吗?

如果你想实现相互赋值,JAVA 中也可以通过间接的方法实现。
1、ClassA ClassB 拥有共同的父类。
Object A1 = new ClassA();
Object B1 = new ClassB();
2、ClassA ClassB 实现统一接