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

一段JAVA小程序难道无数人!!!!来看看
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);
       
    }

}
请问结果是什么,为什么?请详细解释一下



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

难道无数人?楼主调查过?

就是一个方法传值的问题
------解决方案--------------------
怎么会难倒无数人?难道还有什么暗藏的什么玄机

int是原始数据类型,按值传递

结果应该是50,50
------解决方案--------------------
50,50
这个应该可以算是 java 中的基础了
pass 只是把他的植传递过去了
也就是把他的拷贝传了过去
如果传的是对象那本来的植也会改变
最简单的是int[]的数组
你可以试一下
------解决方案--------------------
50,50
------解决方案--------------------
It is very very easy!!!!!!
------解决方案--------------------
。。。。。难倒无数人。。。。不会lz也被难倒了吧,这个问题c++时候就有类似的了,java的入门书也提过n次了,再忽略的人只能说是太。。。。
------解决方案--------------------
。。。。。。。。。 我看楼主是怕没人回答他的问题 所以搞了个这样的标题
------解决方案--------------------
听孙鑫的教程去吧!!!
------解决方案--------------------
局部变量 懂不?
------解决方案--------------------
很简单啊
基本类型是传值
如果是对象那就相当于C中的传地址(句柄)就会改变了
比如string类型就是字符串类

------解决方案--------------------
50,50
------解决方案--------------------
方法有返回,函数无返回,楼主的填空题肯定是这样做的。。。
------解决方案--------------------
倒了
------解决方案--------------------
50,50
------解决方案--------------------
最鄙视标题党
全是sb

------解决方案--------------------
50,50
------解决方案--------------------
主要是形参和实参的传递.
结果是 50,50
------解决方案--------------------
50,50
好象是很古老的问题了
------解决方案--------------------
public class TestPsss
{
public void change(int a)
{
a=100;
System.out.println(a);//你看看这里打印的是什么就知道了.方法结速,堆栈释放内存了。
}
public static void main(String[] args)
{
int pass=50;
TestPass p=new TestPass();这里你新new 了一个实例
System.out.println(pass);
p.change(pass);改变的是新的对象的值了.
System.out.println(pass);对原有对象的值没有影响.

}

}

------解决方案--------------------
50,50呵呵,连我这个菜鸟都知道,羞不羞啊~~~~~~