黑马程序员技术交流社区
标题:
求解基础题目
[打印本页]
作者:
马伟奇
时间:
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