日期:2014-05-20  浏览次数:20660 次

对象调用有参方法 为何不能直接输出
public class Person

         public void run(int i)
         {
                   i = 22;
          }


public static void main(String[] args)

       int age = 11;
       Person person = new Person();

     //  System.out.println(  person.run(age));   错误    不允许使用空类型 
   
    //   System.out.println(  person.age); 错误  
}

不可以输出   以上的错误不太明白 请教,,,

      

------解决方案--------------------
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的成员变量,这样调用是错误的;
}
}

------解决方案--------------------

第一个问题 void返回值不能用于打印

第二个问题 age不是person的变量,编译不能通过
------解决方案--------------------
引用:
就是类的变量只能写在main的外面     写在里面不是类的变量了???

类的变量也叫全局变量,是在整个类体中共享的。
方法中的变量叫局部变量,使用的时候必须初始化或赋值,比如你在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属性赋值之后才可以这样用。

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

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的成员变量,这样调用是错误的;
}
}

正如2楼所说,你这基础有点不稳啊,建议这位同学先买本书从头看

说我吗?我也觉得我该买本书看看了;

说的是楼主,你的解答挺好