在我的代码底部的测试类中,您可以看到一堆system.out.print。我的问题是:为什么堆栈对象不需要写成stack.toString()(而是编写system.out.print(stack))。 print语句是否动态调用toString()方法,因为它是类中唯一可用的字符串方法....或者它是否还有其他功能?
public class Char_Stack {
private char [] array = new char[10];
private int top = 0;
public int size() {
return top;
}
public boolean isEmpty() {
return top == 0;
}
public void push(char value) throws StackFullException {
if (top == array.length)
throw new StackFullException("StackFullException");
array[top++] = value;
}
public double top() throws StackEmptyException {
if (top == 0)
throw new StackEmptyException("StackEmptyException");
return array[top-1];
}
public double pop() throws StackEmptyException {
if (top == 0)
throw new StackEmptyException("StackEmptyException");
return array[--top];
}
public String toString() {
String out = "[" + top + " / " + array.length + "]";
for (int i=0;i<array.length; i++) {
out += " " + array[i];
}
return out;
}
public static void main(String[] args) throws StackFullException,StackEmptyException {
Char_Stack stack = new Char_Stack();
stack.push('Y');
System.out.println(stack);
stack.push('P');
System.out.println(stack);
stack.push('P');
System.out.println(stack);
stack.push('A');
System.out.println(stack);
stack.push('H');
System.out.println(stack);
stack.pop();
System.out.println(stack);
stack.pop();
System.out.println(stack);
stack.pop();
System.out.println(stack);
stack.pop();
System.out.println(stack);
stack.pop();
System.out.println(stack);
}
}
答案 0 :(得分:1)
粗略地说,是的,确实如此。它会“尽力”打印出来。会发生什么情况System.out.println(object)
调用String.valueOf(object)
,然后调用object.toString()
。
答案 1 :(得分:1)
System.out.println()
为你做到了。
打印一个对象,然后终止该行。 此方法首先调用String.valueOf(x)来获取打印对象的字符串值,然后表现为调用print(String)然后调用println()。
如果参数为null,则字符串等于“null”;否则,返回obj.toString()的值。
答案 2 :(得分:0)