[英]Why does my object not need to call the .toString method?
在我的代码底部的测试类中,您可以看到一堆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);
}
}
粗略地说,是的,确实如此。 它会“尽力”打印出来。 会发生什么是System.out.println(object)
调用String.valueOf(object)
,它反过来调用object.toString()
。
System.out.println()
为您做到了这一点。
打印一个对象,然后终止该行。 此方法首先调用String.valueOf(x)来获取打印对象的字符串值 ,然后表现为调用print(String)然后调用println()。
如果参数为null,则字符串等于“null”; 否则, 返回obj.toString()的值 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.