代码如下

public class Test {
    static int i=1;

    @org.junit.Test
    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";
    }
}

结果如下

I lovejava
me 2

  当你看到这段简短的代码输出结果和你想象的不一样的时候,是不是感觉到吃惊,我第一次看到这段代码的时候也很迷惑,然后我就去查阅了以下jdk文档,然后自己测试了以下
toString()方法

  然后发现由于所有的对象都继承了Object对象,所以 如果在println中输出一个对象时,对象就会去调用他的toString()方法,所以就会出现先输出“I" ,然后+“love最后加上toString的返回值“java
  由于i是一个静态常量,在函数开的时候就直接被加载了。

验证如下

public class Test {
    static int i=1;

    @org.junit.Test
    public static void main(String[] args) {
    //  System.out.println("love "+new Test());
        System.out.println(new Test());
        //输出[email protected]
       //ystem.out.println(new Test().toString());
       //输出[email protected]
        Test a = new Test();
        a.i++;
        System.out.println("me "+a.i);
    }


//  public String toString() {
//      System.out.print("I ");
//      return "java";
//  }

相关文章:

  • 2021-10-04
  • 2021-07-03
  • 2022-03-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-23
  • 2021-07-20
猜你喜欢
  • 2021-04-05
  • 2021-11-08
  • 2021-08-04
  • 2021-08-27
  • 2021-11-18
相关资源
相似解决方案