static variable vs non static variable

前端 未结 4 882
遥遥无期
遥遥无期 2020-12-20 08:37

I have defined an object and declared a static variable i. In the get() method, when I try to print the instance and class variable, both print the

4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-20 09:34

    No, there's only one variable - you haven't declared any instance variables.

    Unfortunately, Java lets you access static members as if you were accessing it via a reference of the relevant type. It's a design flaw IMO, and some IDEs (e.g. Eclipse) allow you to flag it as a warning or an error - but it's part of the language. Your code is effectively:

    System.out.println("Value of i = " + test.i);
    System.out.println("Value of static i = " + test.i);
    

    If you do go via an expression of the relevant type, it doesn't even check the value - for example:

    test ignored = null;
    System.out.println(ignored.i); // Still works! No exception
    

    Any side effects are still evaluated though. For example:

    // This will still call the constructor, even though the result is ignored.
    System.out.println(new test().i);
    

提交回复
热议问题