public class Person
{
public void run(int i)
{
i = 22;
} public static void main(String[] args)
{
int age = 11;
Person person = new Person(); //person.run(age)返回值是void,只有返回值不是void的时候才可以打印;
//可以直接:
person.run(age);

System.out.println(person.run(age));  System.out.println( person.age); //age不是 类Person的成员变量,这样调用是错误的;
}
}

解决方案 »

  1.   


    第一个问题 void返回值不能用于打印第二个问题 age不是person的变量,编译不能通过
      

  2.   


    System.out.println(  person.run(age));   //run方法没有返回值 不可以直接打印
    public int run(int i)  {
        i = 22;
        return i;
    }
    System.out.println(  person.age); //person类没有age成员
    //在类中添加 public int age = 1;
      

  3.   

    就是类的变量只能写在main的外面     写在里面不是类的变量了???
      

  4.   

    类的变量也叫全局变量,是在整个类体中共享的。
    方法中的变量叫局部变量,使用的时候必须初始化或赋值,比如你在main方法中写的:int age = 11;
     Person person = new Person(); 这一句你构造了一个Person对象。
     person.run(age);  你在main方法调用了run方法,你首先要知道run方法做了什么:  public void run(int i)
             {
                       i = 22;   //将传进来的任意int类型参数赋值22,但是没有返回值。
              }所以说你的run方法没有意义的,你只是改变了传进来的参数值,但对外界并无任何影响。
    现在再说你这一句,你的run(age)方法没有返回值,你打印一个无返回值的方法,就会报直接报非运行时异常:
    The method println(boolean) in the type PrintStream is not applicable for the arguments (void)
    同样:System.out.println( person.age)
    age是你定义的局部变量,而不是你person的属性,所以你不能这样取值。你可以直接打印age,或者通过Person的set方法给其age属性赋值之后才可以这样用。
      

  5.   

    main方法也就是一个方法而已,方法里面的变量怎么可能还是类的呢。不同的也就是main能够启动而已。
      

  6.   


    明白了 非常感谢楼上的解答  再问一个小问题Java中用new生成对象   比如Object object = new Object();  那么 用new生成的 Object(); 是对象 但无法直接操纵对象  所以对象赋值
    给等号左边的引用数据类型Object和变量objec 来操纵对象  这么说对吧