class pass

 int x;
   public static  void main(String args[])
   {   
      pass obj=new pass();
      obj.x=5;
      change(obj);
      System.out.println(obj.x);
   }
   public *static* void change(pass obj)
   {
     obj.x=3;
      
   }}
在change()方法中为什么必须要用static啊,请教大家!

解决方案 »

  1.   

    不为什么  你可以不用static修饰  但是这样的话 你调用的时候就要先实例化一个对象了 才能调用这个方法
    pass p = new pass();
    p.change(obj);类名首字母最好大写 方法名首字母小写
      

  2.   

    static声明的方法不用实例对象
      

  3.   

    static声明的方法不用实例对象,可以直接拿来用,如change(obj); 
    否则你调用的时候就要必须先实例化一个对象了 如new pass().change(obj);
    以后类名要注意首字母大写!
      

  4.   

    关于static的学习是很强大的哦,呵呵:
    方法的调用:
           当方法是静态时(有static),通过<类名.方法名([参数])>进行调用。 例:
           public class Test{
       public static void main(String[] args){
                  Test.method();//调用静态方法。
       }           public static void method(){
        System.out.println("静态方法被调用");
       }
           }     非静态方法调用:通过<实例名.方法名([参数])>进行调用。 例:
           public class Test{
       public static void main(String[] args){
                  Test t = new Test();
          t.method();//调用非静态方法
       }           public void method(){
        System.out.println("非静态方法被调用");
       }
           }
    方法调用时的参数,根据定义来给。如定义时有参数,调用时必须给参数,且类型,位置一致。
    ....
      

  5.   

    因为void change使用的是static的,就可以直接被调用。用static声明的方法在调用时,不会把对象的引用传递给它,所以在static方法中不可以访问非static的成员。
      

  6.   

    静态方法不能直接调用非静态方法main要想用它,它必需为静态方法
      

  7.   

    因为在main()里直接调用change()方法,没有生成对象的实例
      

  8.   

    change(obj); 
    想直接用就要设成static
      

  9.   

    main里调用了 change()方法
    而 main 是静态的
    所以 change()应声明为静态的