没有指针做的链表
近来用JavaA题,坐到了链表系列,效果不好,可能是自己对Java中指针的理解不够,下面来分析一下:
Java不是没有指针,而是对指针进行了伪装:使用上泛化、强化和简单化,概念上淡化和弱化。
1.Java强调所有的对象赋值和传递都是引用
Object a=new Object(); 创建一个对象,a是对这个对象的引用
b=a; b并不是一个新对象,它是对a对象的引用。其实呢,a是指针,b也是指针,将a的值赋给b,也就是将a所存储的地址赋给b,b自然指向了a所指向的对象。
2.Java强调两个对象的相等比较(==)不是比较两个对象的值是否相同,是比较两个对象是不是相同的引用。
字符串是一个比较特殊的Java对象。
String a=new String("abc"); String b=new String("abc");
a==b为假,两个对象引用不同。
==的意义并没有变。a是指针,b也是指针,a、b存储的都是地址,当两个变量存储了同一个对象的地址时,这两个地址当然相等,a==b自然是真。当两个变量存储了不同对象的地址,这两个地址值当然不同,a==b自然为假。