繁体   English   中英

Java自定义字符串返回内存位置

[英]Java custom to string returning Memory location

我的CirculaList类中的原始toString方法可以正常工作。 但是,当我在堆栈类的toString方法中调用它时,它返回的是我认为是堆栈的内存位置。 我尝试过重载,但没有明显的区别。

我的代码:

CircularList类

public class CircularList{
private Node tail = null;
public void addToFront(int elem){
    if(elem >= 0){
        Node newNode= new Node(elem);
        if(tail != null){
            newNode.next = tail.next;
            tail.next = newNode;
        }else{
            tail = newNode;
            newNode.next = newNode;
        }   
    }
}

public int deleteFromBack(){
    int returned = -1;
    if(tail != null){
        Node trav = tail;
        while(trav.next != tail){
            trav = trav.next;
        }
        returned = tail.data;
        if(trav.next == trav){
            tail = null;
        }else{
            trav.next = tail.next;
            tail = trav;
        }
    }
    return returned;
}
//@Override
public String toSting(){
    String stg = null;
    stg = "[";
    Node trav = tail.next;
    while(trav != tail){
        stg += trav.getData() +",";
        trav = trav.next;
    }
    stg += trav.getData() + "]";
    return stg;
}

public CircularList clone(CircularList other){
    tail = other.tail;
    return this;
}

}

堆栈类

public class Stack{
private CircularList list = new CircularList();

public void push(int elem){
    list.addToFront(elem);
}

public int pop(){
    CircularList tempList = new CircularList();
    int keeper = -1;
    if(isEmpty() != true){
        keeper =list.deleteFromBack();
        while(isEmpty() != true){
            tempList.addToFront(keeper);
            keeper =list.deleteFromBack();
        }
        list.clone(tempList);
    }
    return keeper;
}

public int peek(){
    CircularList tempList = new CircularList();
    int keeper = -1;
    if(isEmpty() != true){
        while(!isEmpty()){
            keeper = list.deleteFromBack();
            tempList.addToFront(keeper);
        }
        list.clone(tempList);
    }
    return keeper;
}



public boolean isEmpty(){
    CircularList tempList = new CircularList();
    int keeper = -1;
    keeper = list.deleteFromBack();
    if(keeper==-1){
        return true;
    }else{
        while(keeper!=-1){
            tempList.addToFront(keeper);
            keeper = list.deleteFromBack();
        }
        list.clone(tempList);
    }
    return false;
}

public Stack clone(Stack other){
    list = other.list;
    return this;
}
//@Override
public String toSting(){
    String stg = list.toString();
    return stg;
}

}

测试器类 (顾名思义,它仅用于测试)

public class Tester{
public static void main(String[] args)
{
    CircularList list = new CircularList();

    System.out.println("CircularList");
    System.out.println("=========");
    list.addToFront(1);
    list.addToFront(2);
    list.addToFront(3);
    list.addToFront(4);
    list.addToFront(5);
    System.out.println(list.toSting());
    System.out.println("=========");

    System.out.println("removing: " + list.deleteFromBack());
    System.out.println("=========");

    System.out.println(list.toSting());
    System.out.println("=====================================================");

    System.out.println("stack");
    System.out.println("=========");
    Stack stack = new Stack();

    System.out.println(stack.isEmpty());

    System.out.println("=========");

    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);
    stack.push(5);
    System.out.println(stack.toString());
    System.out.println(stack.isEmpty());
    System.out.println("=========");
    System.out.println("first int: " + stack.peek());
    System.out.println("=========");
    System.out.println("Removing: " + stack.pop());
    System.out.println(stack.isEmpty());
}
}

输出 (等于其与布局混乱时所取的相等值)

[5,4,3,2,1]

删除:1

[5,4,3,2]

真正

Stack @ 15db9742否

第一整数:5

删除:5个错误

使用了toSting()而不是toString(),因此调用了对象类toString()。
@Override在这种情况下很有用,它试图告诉我们在重写该方法时犯了一些错误。
在评论@Override之前进行思考总是有帮助的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM