首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

java解决方法

2012-01-10 
javaclass B {int num5//原值}public class exp2_7 {public static void main(String[] args){int a2f

java
class B {
int num=5;//原值
}
public class exp2_7 {
public static void main(String[] args){
int a=2;
func1(a);//改变
System.out.println(a==2);//与原值比较

B b=new B ();
func2(b);//改变
System.out.println(b.num==5);//与原值比较
}

static void func1(int t){
t++;//改变基本类型的数据.
}
static void func2(B t){
t.num++;//改变对象中的数据.
}
}
这个算法的结果是?怎么来的

[解决办法]
true false


[解决办法]
答案是true false ,你对参数传递方式只有一种理解的有问题,我看java编程思想的时候作者也不太想争论这一点,false的结果也很容易解释,在执行方法的时候复制了指向B对象的引用,然后通过这个引用改变了B对象的值,原来B对象的引用没有改变,引用的对象没变,但是对象本身值改变

非得说参数本身不受影响也就是只B对象的引用指向没变

热点排行