A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马伟奇 黑马帝   /  2011-12-18 10:31  /  1954 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马伟奇 于 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;
        }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 晨曦 于 2011-12-18 10:38 编辑

很简单,我博客里面写了


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

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

  2.只能访问static数据。

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


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


评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
因为this代表的实质上是调用这个方法的实例对象。但是静态代码是在类加载的时候而加载,那个时候还没有进行类的实例初始化,所以就不能这样调用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
韩军博 发表于 2011-12-18 10:40
因为this代表的实质上是调用这个方法的实例对象。但是静态代码是在类加载的时候而加载,那个时候还没有进行 ...

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

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马