`public class Test {    static int i = 1;    public static void main(String[] args) {        System.out.println("love " + new Test());        Test a = new Test();        a.i++;        System.out.println("me " + a.i);    }    public String toString(){        System.out.print("I ");        return "java ";    }}` *   1*   2*   3*   4*   5*   6*   7*   8*   9*   10*   11*   12*   13*   14*   15*   16*   17


这段代码对于没有接触过的初学者来说相对是一脸懵逼
但,不慌,问题不大
咱们来对他的运行原理先进行一下钻研,批改一下代码


能够看到,在System.out.println();中new Test(),实际上是调用了toString()这个办法
那咱们持续把toString()办法正文掉


为什么会是这么一个神秘的字符串呢?
有问题,找api
咱们当初去查一下原始的toString办法就晓得了

所以当初咱们就晓得了 System.out.println("love " + new Test());运行完之前先解析了new Test(),输入了“I”,而后解析完了返回了一个“java”,所以最初输入了“I love java”
如果还不是太确信的话能够将重写的toString()办法中的System.out.print改成System.out.println,后果便是“I”换行,而后“love java”