“万事万物皆对象”使我们常常听到的一句话,说到对象就要先说类,我们我一组具有相似特征或多做的事物可以抽象成一个类,那么对象则是类的一个实例,好比人作为一个类,你、我皆是人这种类里面的一个实例。
那么什么是对象的引用呢?对象和对象的引用完全两个不同的概念。在JAVA中尽管一切皆可以“看作”是对象,但操作的标识符实际是指向一个对象的"引用"。
举个栗子。
Person person = new Person("张三");
在这里 person 是一个对象,是一个Person的实例;还是说,这里的person不是真正的对象。而是指对象所创建的对象的引用。
再举个栗子。
Person person;
person = new Person("张三");
这两行代码实现的功能同上边一行是一样的。我们知道,java中的new是在堆上创建对象用的,如果说person是一个对象的话,那么第二行代码为何要再次new呢?由此可见,person并不是所创建的对象,那么person是什么?上文中提到:"操作的标识符实际上是指向一个对象的引用",也就是说person是一个引用,是一个可以指向Person类对象的引用,真正的创建语句是右边的new Perosn("张三")。
再看一个栗子。
Person person;
person = new Person("张三");
person = new Person("李四");
这里让person先指向了"张三"这个对象,然后又指向了李四这个对象,也就是说,这句话只是声明了一个Person类的引用,它可以指向任何的Perosn类的实例。
也就是说,一个引用可以指向多个对象。
那么同样的
Perosn person = new Perosn("张三");
Person person2 = person;
person1和person2都指向了“张三这个对象”。