在java语言中尽管一切都可以看作对象,但真正操作标识符实质上是一个引用,那么引用究竟在java中是如何体现的呢?
语法如下:
类名 对象引用名称
比如一个book类的引用可以使用如下代码:
Book book;
通常一个引用不一定需要一个对象相关联。引用与对象相关联的语法如下:
Book book=new Book();
注意:引用只是存放一个对象的内存地址,并非存放一个对象,严格说引用和对象是不同的,但是可以将这种区别忽略,如可以简单地说book是Book类的一个对象,而事实上应该是book是包含Book对象的一个引用。
对象的比较:
在java语言中有两种对象的比较方式,分别为“==”运算符和equals()方法。实质上这两种方法本质上还是有区别的:
equals()方法是从String类中的方法,它用于比较两个对象引用所指的内容是否相等;
“==”运算符比较的是两个对象引用的地址是否相等。
package a;
public class a {
public static void main(String [] args)
{
String c1=new String("abc");
String c2=new String("abc");
String c3=c1;
System.out.println("c2==c3的运算结果是: "+(c2==c3));
System.out.println("c2.equals(c3)的运算结果为: "+(c2.equals(c3)));
}
}
控制台输出结果:
c2==c3的运算结果是: false
c2.equals(c3)的运算结果为: true
由于c1和c2是两个不同的对象引用,两者在内存中的位置不同,而Stringc3=c1;语句将c1的引用赋给c3,所以c1和c3这两个对象的引用是相等的,也就是打印c1==c3这样的语句将返回true值。对象c1,c2,c3在内存中布局是: