NIIT的一道Java面试题。。为什么结果是0呢??
publicclassA6{publicstaticvoidadd3(Integeri){intval=i.intValue();val+=3;i=newInteger(...
public class A6 {
public static void add3(Integer i){
int val=i.intValue();
val+=3;
i=new Integer(val);
}
public static void main(String[] args) {
Integer i=new Integer(0);
add3(i);
System.out.println(i.intValue());
}
} 展开
public static void add3(Integer i){
int val=i.intValue();
val+=3;
i=new Integer(val);
}
public static void main(String[] args) {
Integer i=new Integer(0);
add3(i);
System.out.println(i.intValue());
}
} 展开
6个回答
展开全部
这个是在java中 常见的问题,主要是传值还是地址.
最简单的就是自己写的类你就当他是传引用.不是自己写的就当成传值..这样基本上不会出错
最简单的就是自己写的类你就当他是传引用.不是自己写的就当成传值..这样基本上不会出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
参数传入的问题,如果传入的是变量的引用也就是地址则i的值会发生变化,不然i的值是不会发生变化的。
追问
纠正,java中只有值传递,没有所谓的引用传递!!!
追答
好吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为add3没有返回值,即没有给i重新赋值,所以i还是0
更多追问追答
追问
那系统在执行add()的“i=new Integer(val);”的时候 到底做了什么呢???
追答
add3方法中的i跟main中的i是两个变量,add3中new就是新创建了一个新的对象。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
地址引用问题,主方法中新建的出i对象指向地址在调用方法后数值不变。
追问
add3()中 i=new Integer(val); 之后i对象指向的地址 应该是一个新的对象啊 能不能详细说明一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基本类型的包装类虽然是引用传递,但是值不可改变
追问
不是,java中只有值传递,没有所谓的引用传递!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询