对不起,我写错了。 
第四行中的是int x=5

解决方案 »

  1.   

    我不知道楼主有没有亲自去运行这个程序。这个程序肯定是编译不能够通过的。
    public static void main(){
    这一行是不对的,至少少了String args[]
    还有public static void change(x){
    这一行中应该是change(int X)修改后的程序是:
    class Ex1
    {
    public static void main(String args[]){
    int x=3;
    change(x);
    System.out.println(x);
    }
    public static void change(int x){
    x=5;
    }}不过我在你的原来的程序中没有发现5。int类型的参数是行参。
      

  2.   

    现在我告诉大家完整的
    class Ex1
    {
    public static void main(String args[]){
    int x=5;
    change(x);
    System.out.println(x);
    }
    public static void change(int x){
    x=3;
    }}
      

  3.   

    第2个问题,没有返回。只是把在方法CHANGE里的X 附值。如果有返回,用RETURN的。结果是5,因为在JAVA里,基本类型,int,double,char什么的 都是传值的。就是
    在你的MAIN函数里运行的 change(x);这个x 是5,这个x 把值给了
     public static void change(int x)这里的x,只是值,这两个X除了值相同以外,没有任何关系。
    所以你把x= 3;改了。不影响MAIN函数里的X。
      

  4.   

    java语言总是使用传值调用
    要区别传引用调用
      

  5.   

    第一个问题:
    int x = 5;
    public void change(int a){
     System.out.println(a);
    }
    这里的x是一个实参,而a是一个形参.
    实参你可以理解成是一个发送者,就像x是被发送给了change方法一个
    形参你可以理解成是一个接收者,就像a是接一个发送过来的值.第二个问题:
    你的理解错误了,所谓返回其实是一个指方法所代表的值,如下
    public string a(){
      return "abc";
    }
    这才叫做返回,你可以如下使用这个返回值
    string text;
    text = a();第三个问题:
    这是因为在java里基本数据类型的传递方式是按值传递的.
    如你写的程序一样,外部的x变量从来就没有改变过的.而你改变的只是在change函数里的x变量.
    而且在你调用完change方法后,在基方法中的x的生命周期也就结束了,所以在change外的x从来就没有改变过!
      

  6.   

    在java中没有指针,要用对象的引用在函数中的传递才可以达到无返回值时对数值的改变我也是刚好学到这,不过这里的值传递就学C语言的经验而言是行不通的。如果定义一个类,在类中有这么一个方法,也许可以改变变量的值,但形参和实形同名的话,需决定是否用this.来标明是哪个参数才行。