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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王贵朝 中级黑马   /  2012-9-25 07:21  /  1705 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王贵朝 于 2012-9-25 08:08 编辑

public class TestDemo {
        int x;
        public static void main(String[] args) {
                x=9;
        }
        
                System.out.println(x);
}

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
  1.        
  2. public class Test
  3.         {
  4.         public static void main(String[] args)
  5.                 {
  6.                         int x;
  7.             x=9;
  8.                         System.out.println(x);
  9.                 }
  10. }
复制代码
楼主,你可以这样写.

评分

参与人数 1技术分 +1 收起 理由
王德升 + 1 赞一个!

查看全部评分

回复 使用道具 举报
public static void main(String[] args) {
                x=9;
        }
首先 mian函数是静态的,不能访问非静态成员或者方法,所以,你非要访问的话
可以在
int x;   //错误因为静态不能访问非静态
前面加上static即可  static int x;  //这样加个static即可

回复 使用道具 举报
public class Test
        {
        public static void main(String[] args)
                {
                        int x  ;
         
                        System.out.println(x+"9");
                }
}
回复 使用道具 举报
楼主,在静态方法里面是不可以访问方法外部的实例变量的。因为静态方法初始化的时间要早于实例变量初始化的时间,也就是说一个已经准备好了的方法可能会去访问一个还没有准备好的变量,这种可以预见会导致错误的情况当然是不允许存在的,所以编译阶段都不能通过。楼主要想解决你的问题,一个是将你的变量x定义成静态的也就是 static int x;另外一个就是将你的变量声明写到main方法中。还有一个就是你的打印语句也要写到main方法里面,只有在方法里面(例如main()方法)才可以调用方法(例如方法println())
回复 使用道具 举报
晕, 第一个x是TestDemo的一个实例变量的声明,没有初始化。
        第二个x是一个方法(主函数)的局部变量,如果方法是非静态的当局部变量名与实例变量名相同是,局部变量在该方法体内屏蔽实例变量。
但如果方法是静态的(如你的主函数)就不能够访问类声明的实例变量。 因为,静态成员在类加载的时候已经存在了,但是可能还没有对象,所以就不存在实例变量,你怎么能够访问不存在的东西呢!  编译失败!  你只要理解了这个,你这个类有多种改法。 你都可以试试!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马