黑马程序员技术交流社区

标题: 求解基础题目 [打印本页]

作者: 马伟奇    时间: 2011-12-18 10:31
标题: 求解基础题目
本帖最后由 马伟奇 于 2011-12-18 10:42 编辑

public class Demo
{
        public static void main(String[] args)
        {
               
               
                int s = sum();
                //this.  这里怎么用this.sum()方法点不出来求解
                System.out.println("s = "+s+";");
               
               
        }
        public static int sum()
        {
                int sum = 0;
                for(int i = 0; i<101; i++)
                {
                sum+=i;
                }
                return sum;
        }
}
作者: 郝锡强    时间: 2011-12-18 10:38
本帖最后由 晨曦 于 2011-12-18 10:38 编辑

很简单,我博客里面写了


声明为static的方法有以下几条限制:

  1.仅能调用其他的static 方法。

  2.只能访问static数据。

     3.不能以任何方式引用this 或super(关键字super 与继承有关)。


http://blog.csdn.net/hgttl/article/details/7077072



作者: 韩军博    时间: 2011-12-18 10:40
因为this代表的实质上是调用这个方法的实例对象。但是静态代码是在类加载的时候而加载,那个时候还没有进行类的实例初始化,所以就不能这样调用。
作者: 马伟奇    时间: 2011-12-18 10:41
韩军博 发表于 2011-12-18 10:40
因为this代表的实质上是调用这个方法的实例对象。但是静态代码是在类加载的时候而加载,那个时候还没有进行 ...

:handshake,果然是高手
作者: 余松霖    时间: 2011-12-18 10:42
  因为你的主函数是静态的。 不能从静态函数中引用this。
作者: 舒远    时间: 2011-12-18 13:29
你的sum方法是静态的。静态方法是类相关的、this代表当前对象的引用,是对象相关的。从类加载机制来说,对象还没有创建,则this就没有指向任何对象。但是static的成员已经在内存中分配了空间。
简单一句话就是:静态成员不能访问非静态成员。main方法是静态的。所以不能访问this。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2