【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

【Java】一段有趣的Java代码
这段代码对于没有接触过的初学者来说绝对是一脸懵逼
但,不慌,问题不大
我们来对他的运行原理先进行一下研究,修改一下代码
【Java】一段有趣的Java代码
【Java】一段有趣的Java代码
可以看到,在System.out.println();中new Test(),实际上是调用了toString()这个方法
那我们继续把toString()方法注释掉
【Java】一段有趣的Java代码
【Java】一段有趣的Java代码
为什么会是这么一个神秘的字符串呢?
有问题,找api
我们现在去查一下原始的toString方法就知道了
【Java】一段有趣的Java代码
所以现在我们就知道了 System.out.println("love " + new Test());运行完之前先解析了new Test(),输出了“I”,然后解析完了返回了一个“java”,所以最后输出了“I love java”
如果还不是太确信的话可以将重写的toString()方法中的System.out.print改成System.out.println,结果便是“I”换行,然后“love java”

以上是 【Java】一段有趣的Java代码 的全部内容, 来源链接: utcz.com/a/91567.html

回到顶部