java - 为什么应用于该对象的 System.out.println 会打印这个短语?

标签 java oop

下面我有两个类。当我运行 TestSimple 类时,它打印出“blueblueblue 是蓝色重复的”。该打印语句执行为 System.out.println(item)这是 Simple() 的一个实例类(class)。我以前从未见过一个对象作为短语打印出来,而且我很难确定为什么会发生这种情况。

我看到Simple中有一个方法类名为 toString它应该在调用时打印出来,但我没有看到该方法在任何地方被调用。这是怎么回事?

public class Simple {
     private String word; 
     private String phrase; 
     public Simple(int number, String w) {  
          word = w;     
          phrase = mystery(number, w);          
     }   
     private String mystery(int num, String s) {    
          String answer = "";   
          for (int k=0; k<num; k++) {       
               answer = answer + s;     
          }     
          return answer; 
     } 

     public String toString() {     
          return phrase + " is " + word + " repeated";
     }
}

public class TestSimple{
     public void print() {      
          Simple item = new Simple(3, "blue");      
          System.out.println(item);         
     }      

     public static void main(String[] args) {
        new TestSimple().print();
    }
}

最佳答案

System.out PrintStream , PrintStream.println(Object) (来自链接的 Javadoc)首先调用 String.valueOf(x)获取打印对象的字符串值 String.valueOf(Object) 返回 obj.toString() 的值

关于java - 为什么应用于该对象的 System.out.println 会打印这个短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418083/

相关文章:

java - 为什么 JAXB 试图绑定(bind) Spring 的 ApplicationContext?

oop - OOP 设计模式中的 "Client"概念?

javascript - 如何通过只是对对象的引用的变量来为对象赋值?

java - 如何使用 EasyMock 测试文件的写入/读取

java - Android Studio,如何将 fragment 添加到我的选项卡菜单?

java - 分享一个需要数据持久化的项目【数据库】

java - .class 到 jar 和 .class 到 exe 的转换

javascript - JavaScript getter 方法的意义何在?

c++ - 方法返回不同类型/类的设计模式

php - 可捕获的 fatal error : Object of class PDO could not be converted to string in