public class TestPsss
{
  public void change(int a)
  {
    a=100;
  }
  public static void main(String[] args)
  {
    int pass=50;
    TestPass p=new TestPass();
    System.out.println(pass);
    p.change(pass);
    System.out.println(pass);
    
  }}
请问结果是什么,为什么?

解决方案 »

  1.   

    都是50。从封装的角度来看,应该确保组件(一个程序一个类或者一个方法)不会以不可预期的方式改变其它组件的内部状态,所以说,对于java语言的创造者来说,他们就认为,我把一个值给了你,你不应该仅仅通过一个简单的你自己的操作,就把它改变了。如果你想改变这个值,也应该通过我提供的changeValue之类的方法来进行改变。至于int,虽然不是对象,但是出于处理方式的一致性,设计者把int这样的基本类型也这样处置了。对于你的change(int a) 里面的a其实只是main函数里的pass的一个拷贝。对于main来说,他只负责给change一个值,change自己怎么把这个值处理,main都不会管的。
      

  2.   

    50
    50
    刚开始学java,但是根据java的设计思想,应该都是50。
      

  3.   

    如果你想改变这个值,也应该通过我提供的changeValue之类的方法来进行改变。
    可否举个例子
      

  4.   

    java都是通过值转递,如果你想改变一不变量的值要通过对象才可以改变.
      

  5.   

    都是50
    因为a是个局部变量不会改变pass的值!只是改变它自己的值!
      

  6.   

    public static void main(String[] args)
      {
        int pass=50;
        TestPass p=new TestPass();
        System.out.println(pass);
        p.change(pass);
        System.out.println(pass);
        
      }==============================================================
    100%的都知道第一个肯定是50 
    第二个有可能初学者会搞不清楚  不敢肯定结果
    如果把程序里的方法改成 
     public int change(int a)
      {
        a=100;
        return a;  }System.out.println(change(pass));
    应该会比较理解些!
    Java 不存在引用传递  只有值传递!