class MyClass 
{
   static String myName = "hello";
  
MyClass getMyClass() 
   {     
      System.out.println(myName);
      return null;     
   }   public static void main(String[ ] args) 
   {
     System.out.println( new MyClass().getMyClass().myName );
   }
}
结果为:
hello
hello
=======================================
问题是:
getMyClass方法返回的是null,如果最后的打印语句改为System.out.println( new MyClass().getMyClass())也是会打印出null的。那么既然方法返回的是一个指向null的MyClass对象,怎么还可以以此空对象来调出myName这个变量呢?

解决方案 »

  1.   

      既然定义为static String myName = "hello";那么myName在new MyClass()之前就已经存在了
      

  2.   

        我是这样认为的,你的new MyClass().getMyClass().myName 执行了getMyClass()方法后,实际上你得到了跟下面这样的语句一样效果:
         MyClass xxx =null;
        由于myName是静态字段,有没有对象都可以直接使用的.
        不信试试:
        MyClass d =null;
        System.out.println(d.myName);