Class x = new class() 说明Class这个类声明了一个名为x的实例,x为Class这个类的引用,使用了new关键字说明系统已经在内存上为这个引用分配了内存空间 如果没有用new关键字说名这个引用还没有被分配内存空间,当调用x是会报对象为空的错误
1个class Player,b是Player的一个实例
我要创建1个新的Player实例,
这样写Player a = b;
和Player a = new Player(); a = b;
有什么区别吗?
我的理解是:
新的对象不是必须都要用关键字new出来吗.所以Player a = b,是不是并没有分配堆内存空间,直接让a直接指向引用类型b,第2种写法Player a = new Player(),先是分配堆内存空间给引用类型a,然后a = b,使a指向b,然后垃圾回收将自动收回先前分配的堆内存空间。因此第2种写法会造成更大的内存开销
只是注意垃圾收集并不一定马上进行,也就是说,你 player a = new player()产生的对象有可能一直存在.