最近java的类和对象,突然想到如果我用一个引用可以指向一个对象,但是我就是没事做,我想要多个引用指向一个对象,如下:
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
System.out.println("h1 : " + h1);
System.out.println("h2 : " + h2);
System.out.println("h3 : " + h3);
System.out.println("h4 : " + h4);
}
输出结果为:
h1 : com.sxt.Hero@1b6d3586
h2 : com.sxt.Hero@4554617c
h3 : com.sxt.Hero@1b6d3586
h4 : com.sxt.Hero@1b6d3586
可见,多个引用是可以共用同一个地址的,那么我赋值的话用任何一个引用都可以输出同一个值吗?试试看:
package com.sxt;
class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
h1.name = "哦豁";
System.out.println("h1 : " + h1);
System.out.println("h2 : " + h2);
System.out.println("h3 : " + h3);
System.out.println("h4 : " + h4);
System.out.println(h1.name);
System.out.println(h3.name);
}
}
结果如下:
h1 : com.sxt.Hero@1b6d3586
h2 : com.sxt.Hero@4554617c
h3 : com.sxt.Hero@1b6d3586
h4 : com.sxt.Hero@1b6d3586
哦豁
哦豁
这说明可以,那么如果我多个对象一个引用可不可以呢?我先试试:
package com.sxt;
class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero h1 = new Hero();
h1 = new Hero();
}
}
然后它会警告:
第7行:Variable 'h1' initializer 'new Hero()' is redundant
这说明 之前引用h1指向已经没有意义了,虽然不会影响编译,但是理论上我们是不需要这种弄法的,因为程序是需要尽可能0警告的。