import java.util.*;public class Test1
{
    private Date hireDay;

public static void main(String[] args)
{
GregorianCalendar calendar = new GregorianCalendar(1991,11,9);
hireDay = calendar.getTime();
System.out.println("Hireday= " + hireDay);
}
}报错说:D:\result>javac Test1.java
Test1.java:10: 无法从静态上下文中引用非静态 变量 hireDay
                hireDay = calendar.getTime();
                ^
Test1.java:11: 无法从静态上下文中引用非静态 变量 hireDay
                System.out.println("Hireday= " + hireDay);
                                                 ^
2 错误为什么呢?
刚开始学java,有点懵。谢谢。

解决方案 »

  1.   

    改成这样private static Date hireDay;
      

  2.   

    import java.util.*;public class Test1
    {
      private Date hireDay;
      public void setHireDay(final Date hd){hireDay = hd;}
      public Date getHireDay() { return (Date)hireDay.clone();}  public static void main(String[] args)
      { 
        GregorianCalendar calendar = new GregorianCalendar(1991,11,9);
        Test1 t1 = new Test1();
        t1.setHireDay(calendar.getTime());
        System.out.println("Hireday= " + t1.getHireDay());
      }
    }
      

  3.   

    类变量与成员变量的区别。类方法不能访问成员变量或方法,必须通过实例来访问成员属性和方法。
    import java.util.*;public class Test1
    {
      private Date hireDay;public void setHireDay(Date hireDay){
       this.hireDay = hireDay;
    }public Data getHireDay(){
       return hireDay;
    }public static void main(String[] args)
    {
    GregorianCalendar calendar = new GregorianCalendar(1991,11,9);
    Test1 t = new Test1();
    t.setHireDay(Hicalendar.getTime());
    System.out.println("Hireday= " + t.getHireDay());
    }
    }
      

  4.   


    import java.util.GregorianCalendar;
    import java.util.Date;
    class Test1
    {
    private Date hireDay;//还是写个公有的方法吧
    public Date gethireDay()
    {
    return this.hireDay;
    }
    public void sethireDay(Date d)
    {
    this.hireDay=d;
    }
    }
    public class Ansewer09
    {
    public static void main(String[] args)
    {
    GregorianCalendar calendar = new GregorianCalendar(1991,11-1,9);
    Test1 t=new Test1();
    t.sethireDay(calendar.getTime());
    System.out.println("Hireday= " +(t.gethireDay()).toString());
    }
    }
      

  5.   

    静态变量和方法是属于类的,非静态成员变量方法是属于对象的。
    如果你在静态方法中使用了非静态的变量,JVM不知道它是哪个对象的变量,所以会报错。
    也就是说非静态的成员变量是对象的属性,它是跟某个对象紧紧绑定起来的,访问的时候必须通过对象来访问,没有对象就不能访问它的非静态成员变量。
      

  6.   

    static 是静态的意思,他的方法中,只允许调用静态的方法
      

  7.   

    private Date hireDay;
    变为private static Date hireDay;