rt  这好像是基础知识来的
但以前没碰到过望大虾们给小弟讲解讲解 谢谢

解决方案 »

  1.   

    java中类的方法池中都有一个隐含的参数this,他表示本对象的引用
    但是static方法是没有这个隐含参数的,因为static方法和类的实例无关
    它只在类装载的时候初始化
    很多书都把静态变量称作类级变量
      

  2.   

    this 表示这个类的当前实例,而静态方法不依赖于该类的任何实例,因此方法内不能引用 this。
      

  3.   

    确实是基础问题:(1) 非静态方法参数传递时,有一个隐式参数this,这个this就是调用该方法的对象本身。
        比如,   Object o=new Object();
                o.toString(); //实际上是有参数传递的toString(Object this),且o==this
        这样在非静态方法中就可以通过this来得到调用对象的其他域和方法,私有域的也行。(2) 静态方法是属于类的,而并不属于某个对象。所以没有隐式参数this,自然也就不能通过this调用对象本身了。
        但这并不意味这不能调用非静态域。我们可以通过显示参数传递来做到这一点:
         class MyClass{
                    private int nonStaticData=0;
                    private static int staticData=0;                public static void operStaticMethod(MyClass mc){
                          System.out.println(staticData); //直接使用类中的静态域
                          System.out.println(mc.nonStaticData); //使用对象mc中的非静态域
                    }
               }                MyClass c=new MyClass();
               MyClass.operStaticMethod(c);
               
                    
      

  4.   

    static叫静态方法,也叫类方法,就是在程序启动的时候,就会为这个方法分配一块内存空间,所以什么时候都可以调用这个方法。
    没有static的其他方法,非静态方法,必须在类实例化时,才有内存空间,所以在类实例化之前是无法调用的。
    所以,静态方法里不能调用非静态方法,除非你先实例化那个类。
      

  5.   

    static是属于类的,this是类的一个对象,当然调用了不了他,static太牛了,只有类名可以调用它
      

  6.   

    对于static修饰的方法而言,可以使用类名来直接调用该方法,如果在static修饰的方法中使用this关键字,则这个关键字就无法指向合适的对象。所以static修饰的方法中不能使用this引用.从另外一个方面来说,由于static修饰的方法不能使用this引用,所以static修饰的方法不能访问不使用static修饰的普通成员,这与静态成员不能直接访问非静态成员的结论也是一致的。
      

  7.   

    jvm有类加载器,第一次加载类时执行类中的static域,jvm会专门划分一个内存区域给static程序块,可以成为静态区。属于这个类。
    this指针是指向类的对象,在实例化对象时jvm会在堆区分配内存给一个具体的对象,this指针指向这个对象。而类中的static域始终是在静态区分配内存,this指向堆区,所以不能调用。
    static是属于类的。this是对象指针