乐趣区

关于java:一段有趣的Java代码

`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”

退出移动版