请教JAVA中链表的原理 Java中的reference其实就像C++中的指针一样,只不过不提供对reference加减的操作而已。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java中的reference其实就像C++中的指针一样,只不过不提供对reference加减的操作而已。 就是所谓的安全的指针。不过要是再深入理解一下的话,就会知道,其实reference指的不是指针,而是指向的过程。 JAVA中的对象能不能看成是个指针,指向对象引用地址 java中不存在真正的对象,不像C++中的那样,可以在堆栈中分配对象空间,java中的所有对象都是new出来的,也就是说都在系统堆中,所以我们得到的只是一个内存地址,可以看成是C++中的引用,比指针安全,只要知道全是引用就行了,像创建一个对象数组,其实是创建了一个引用数组,只有new后才有真正的地址给它 可以把reference看成指针,下面是一个单链表的例子:import java.util.*;class SingleLinkedList { private String data; private SingleLinkedList next; SingleLinkedList(String i) { data = i; } public SingleLinkedList getNext() { if ( next!=null ) { return next; } return null; } public void setNext(SingleLinkedList next) { this.next = next; } public String getData() { if ( data!=null ) { return data; } return null; }} public class SingleLinkedListTest { public static void main( String[] args ) { SingleLinkedList head = null; SingleLinkedList s = null; SingleLinkedList p = null; int size = (int)(Math.random() * 15); for( int i=0;i<size;i++ ) { s = new SingleLinkedList(i + ""); if( head==null ) { head = s; p = s; } else { p.setNext(s); p = s; } } p.setNext(null); s = null; traverse(head); } public static void traverse(SingleLinkedList head) { SingleLinkedList p = null; if (head !=null ) { p = head; } while( p.getNext()!=null ) { System.out.println(p.getData()); p = p.getNext(); //p = p.next } System.out.println(p.getData()); }} 是用引用,就是用reference指向下一个对象的地址。和指针作用差不多 随机数抽取问题 万年历谁会做;请高手指点; jfreechat 时 序 图问题!辛苦大家了 关于实现java应用程序更新 eclipse的工作区被我给删了,怎样才能让它重新显示出来 高分求教思路问题?关于图片插入问题 如何嵌入HTML文件?? 为什么我的prepareStatement中的setDate()老是报错呢?! 请问哪里有比较多的java源代码下在啊! String的问题 JAVA在linux下運行,是窗口還是在瀏覽器中,如果是窗口的,是不是要啟X? 帮忙看一下程序
只不过不提供对reference加减的操作而已。
java中的所有对象都是new出来的,也就是说都在系统堆中,所以我们得到的
只是一个内存地址,可以看成是C++中的引用,比指针安全,
只要知道全是引用就行了,
像创建一个对象数组,其实是创建了一个引用数组,只有new后才有真正的地址给它
class SingleLinkedList {
private String data;
private SingleLinkedList next;
SingleLinkedList(String i) {
data = i;
}
public SingleLinkedList getNext() {
if ( next!=null ) {
return next;
}
return null;
}
public void setNext(SingleLinkedList next) {
this.next = next;
}
public String getData() {
if ( data!=null ) {
return data;
}
return null;
}
} public class SingleLinkedListTest {
public static void main( String[] args ) {
SingleLinkedList head = null;
SingleLinkedList s = null;
SingleLinkedList p = null; int size = (int)(Math.random() * 15);
for( int i=0;i<size;i++ ) {
s = new SingleLinkedList(i + "");
if( head==null ) {
head = s;
p = s;
} else {
p.setNext(s);
p = s;
}
} p.setNext(null);
s = null;
traverse(head); } public static void traverse(SingleLinkedList head) {
SingleLinkedList p = null;
if (head !=null ) {
p = head;
}
while( p.getNext()!=null ) {
System.out.println(p.getData()); p = p.getNext(); //p = p.next
}
System.out.println(p.getData());
}
}