代码如下:
public class ParamTest
{
public static void main(String[] args)
{
C c = new C(); int a = 0;
c.change(a);
System.out.println(a);
}
}class C
{
  void change(int b)
{
b = 2;
}
}
运行的结果是
0
为什么呢?我一直想不明白

解决方案 »

  1.   

    想让a等于2,change return下。
      

  2.   

    public class ParamTest3
    {
    void change(Person p, Person p2)
    {
    p.name = "lisi";
    p2.name = "wangwu";
    } public static void main(String[] args)
    {
    Person person = new Person();
    person.name = "zhangsan"; Person person2 = person; ParamTest3 test = new ParamTest3(); test.change(person, person2); System.out.println(person.name); }}class Person
    {
    String name;
    }
    为什么上面代码的结果是
    wangwu
      

  3.   

    都说了,基本数据类型和对象是不同的?你不明白?  自己好好查查值传递和传引用的区别。。CSDN这种贴一搜,起码几十上百。要想真正理论,要从内存角度上来讲。。好像Java 编程思想上讲的很细的,还有配图
      

  4.   

    void change(int b)    这一句前面有个void修饰,说明无返回值
    你的 a 虽然给了 c ,但 c 没有把改变后的值返回给a
    如果要 c 把改变后的值给 a,把 void 改为 int,同时在 change()方法内加上 return b; 语句
      

  5.   

    同ls,lz要多看书呀,基础不扎实
      

  6.   

    慢慢来不急,你这个问题很简单!只有传值进去而没有返回回来参数的值赋给a,所以就为初始值了...
    void 方法一般是没有返回值的,要用的话用int,如下:int a = 0;
    a = c.change(a);
    System.out.println(a);
    class C {
    int change(int b) {
      b = 2;
        return b;
      }
    }
      

  7.   

    第二个程序与第一个不同,解释如下:
    Person person = new Person();   命令生成了 Person 对象,并且把其在内存中的首地址给了 person。
    Person person2 = person;    命令没有生成 Person 对象,因为没有 new 嘛,只是把 person 指的对象给了 person2 。 这里运用了JAVA的引用。
    void change(Person p, Person p2){
    p.name = "lisi";
    p2.name = "wangwu";
    }
    里面的 p, p2 实际上指的是一个对象(因为引用)。
    所以输出为 wangwu 
    你如果还不懂,很简单,把
    System.out.println(person.name);   更改为
    System.out.println(person2.name);    自己看一下输出就知道了
      

  8.   


    public class ParamTest
    {
    public static void main(String[] args)
    {
    C c = new C();int a = 0;
    c.change(a);
    System.out.println(a);
    }
    }class C
    {
    void change(int &b)
    {
    b = 2;
    }
    }
      

  9.   

    我还有一个问题。也是关于参数传递的。想请大家帮下忙,(虽然我也看了很多网站的介绍,但是参差不齐,有时候不敢确信,还望各位多多包涵)这个问题困扰我很长时间了。。java里面的传递是不是可以说:形参的改变都不会影响到实参?1.对于基本数据类型,这个是肯定的。2.对于引用型的变量参数,形参和实参是指向同一个内存地址的。因此在函数里面通过形参对对象进行操作会影响   到实参指向的对象。但是这并没有改变实参的值。调用函数后原来实参指向的内存还是原来的那个内存。(意思是即使形参使用new申请一个新的内存空间,但是最后这个内存空间在函数调用完毕后会被释放。实参的值还是原来的值。) Student s=new Student(); s中存储的是内存地址。。是真实情况就是这样?还是可以理解成成这样?。谢谢了~
      

  10.   

    你把 int a = 0 传过去了
    那你打印的值不是0 难道是20?
    赋值运算
      

  11.   


    你可以这样设置下,你数据库里面放的有值的数据,然后你在code里面
    取得了这个数据,
    然后你new Student();
    然后你又给他的属性赋值,也就是说set了,打印出来的值是你赋的值,但数据库里边还是以前的值,不会改变的
      

  12.   


    我前天才刚刚接触Java..是自己上网找教学视频看的哦,弱弱地问下大侠,有什么好书可以推荐下