本帖最后由 shirui8653719 于 2013-08-18 15:58:35 编辑

解决方案 »

  1.   

    main是静态方法
    静态方法中不能调用类的非静态方法和属性
    因为静态方法是类方法,没有this,所以我们找不到调用该方法的对象实例,怎么能调用它的方法和属性?
      

  2.   

    static方法是属于类的方法,非static的方法是属于对象的方法,也就是说,static方法可以不需要创建对象,而直接通过类名去调用;而非static的方法必须要创建对象,然后由某一个具体的对象去调用。
    那么,main方法是static的,所以运行main方法不需要创建这个类的对象,而你要在main里面调用test,调用test就必须创建对象,让对象去调用,这不矛盾了吗?
    要再深入的理解这个问题,你还需要想清楚为什么会有static方法和非static方法两种。
      

  3.   

    static 就是静态的意思,没有对象存在也可使用,不加static修饰的话,就是只能对象存在才能用。
    static 方法在本类使用直接就是在main方法中写方法名就行,再其他类中使用就是类名.方法名。
    楼主你的可以这样改:
    Test t = new Test();
    t.test(s,chs);
    这样就没错了
      

  4.   

    静态方法只能调用静态的啊,你可以不加然后new出对象 用对象的引用.方法名也可以
      

  5.   

    加static的方法只要类被加载到虚拟机,就已经存在了;而没加static的方法,在实例化前是不存在的,它是每个实例一份的。
    那么,你想想,在你执行它的时候,虚拟机把类加载进来(这个时候显然是没有实例化的),然后寻找main函数,如果没有static关键字,它能找到main函数么?结果……虚拟机对你说:“I'm sorry,偶发现它木有main函数耶~”
      

  6.   

    static是“静态”的意思,静态与非静态的区别:
    Class人类,鼻子数量=2、眼睛数量=2是静态变量,名字、性别是非静态变量
    那么,当它没有实例化的时候,Class人类有名字么?有性别么?没有!
    现在我们创建两个实例,“小明”“小红”。
    于是这两个实例就拥有了名字属性和性别属性:“姓名:小明,性别:男”“姓名:小红,性别:女”
    而且非静态属性是每个实例一份的,比如“小明”改名字叫“郭敬明”与小红有半毛钱关系没有?
    但是静态属性就不行了,比如把Class人类的“眼睛数量=3”,那么无论小明还是小红都长出三只眼了。
      

  7.   

      static  是静态的的意思
       静态是类来调用。可以不要创建对象的!
       非静态则要NEW 对象出来
      

  8.   

    静态方法只能直接调静态方法或new 对象
      

  9.   

    main()是静态方法,而test()是非静态方法
    静态方法不能调用非静态方法
    原因:
    非静态的方法,需要类实例化一个对象后,由对象来调用。
    静态方法可以不实例化对象就可以调用,也可以实例化一个对象后由对象掉用。
    静态方法调用非静态方法,这个时候不确定类有没有实例化对象,所以出错。
    反过来,非静态方法可以调用静态方法的。
      

  10.   

    main()是静态方法,而test()是非静态方法
    静态方法不能调用非静态方法。
    静态方法是在类加载的时候跟着初始化了,非静态方法需要实例化一个对象才能调用。
    所以在main方法内,想要直接调用本类中的方法,需要在方法前加static关键字。