我现在知道不能用this,可为什么呢?好像是与内存的堆与栈有关, 请高手指点下

解决方案 »

  1.   

    不可以,main方法是静态的,不能使用非静态的this关键字
      

  2.   

    那为什么静态的方法不可以使用非静态的关键字this呢?
      

  3.   

    因为静态方法在编译的时候就加载了
    而this是所在类的隐式对象.在加载时并不存在当前类的对象所以不行
      

  4.   

    静态方法是在类加载的时候执行.类刚加载可能还没有创建对象呀,使用就不能用this
      

  5.   

    li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起) 好幽默啊
    一般的书上都有原话,就是静态方法只能使用静态变量,但是非静态方法可以使用非静态的变量和静态变量
      

  6.   

    本帖最后由 java2000_net 于 2008-10-10 12:02:12 编辑
      

  7.   

    本帖最后由 java2000_net 于 2008-10-10 12:02:50 编辑
      

  8.   

    原因在于 this关键字表示的事本实例本对象的内容我们都知道对象要在建立之后才能调用 就好比java中要用x的属性和方法就必须在他实例化以后 也就是被new了以后但是如果是main这个静态方法的话静态对象是不能知道他是否被实例化的,他无需new 无需手动实例化 所以也无法直接使用this关键字
      

  9.   

    this 指当前对象的实例可是main不需要实例就能运行,所以在他运行时,根本没有实例,也就没有this
      

  10.   

    this关键字指“当前对象实例”,然而main方法是静态的,它是程序的入口,在程序编译的时候,它会自动地被JVM加载到内存中。注意,在这个时侯,程序还没有实例化对象,所以,自然不能在main方法里使用非静态的this了。
      

  11.   

    this代表当前对象的引用,main是静态方法,对象没创建前就存在了,所以不能使用this