一段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呵呵,连我这个菜鸟都知道,羞不羞啊~~~~~~