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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

王琳

初级黑马

  • 黑马币:0

  • 帖子:5

  • 精华:0

© 王琳 初级黑马   /  2013-3-6 16:02  /  1138 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王琳 于 2013-3-6 19:34 编辑

public static void main(String[] args)
{
              int num = getNum();
              System.out.println(num);
}
public int getNum()
{
      int num = 1;
      return num++;
}        
开始用眼睛看的时候以为结果会是1,敲了一边代码后,一编译,报错了

为什么会报这个错?
如果说我放在另一个class里调是不是就行了?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

倒序浏览
//静态成员只能访问静态的,main是静态方法,你的getNum()方法不是静态的,所以报错了

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
静态放法中不能调用非静态方法,将getSum方法定义成静态的
放在另一个类中,如果该方法没有定义成静态方法,则要先创建该类对象才能调用。
回复 使用道具 举报
  1. public static void main(String[] args)
  2. {            
  3.               int num = getNum();
  4.               System.out.println(num);
  5. }
  6. public static int getNum()//这里用static修饰
  7. {
  8.       int num = 1;
  9.       return num++;
  10. }        
复制代码
*************************************************************************

  1. class Demo
  2. {            
  3.            public static void main(String[] args)
  4.    {
  5.               Demo d = Demo();
  6.               int num = d.getNum();
  7.               System.out.println(num);
  8. }
  9. public int getNum()
  10. {
  11.       int num = 1;
  12.       return num++;
  13. }
  14. }  
复制代码
主函数是静态的 而你的getNum是非静态的,静态函数只能调用静态函数,你把getNum方法放在其他类中也是一样。非静态方法可以创建对象用对象调用。
回复 使用道具 举报
是啊,static使用的时候是有限制的,总结一下,第一点,只能调用其它静态方法 ; 第二点,只能访问
静态数据,,第三点,不能使用关键字this和super,所以你的问题出现在第一点。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马