值传递的相关问题

zhanglieqiang 2017-09-06 09:02:55
public class TestCase {

public static void add3(Integer i) {
Integer value = i;
value += 1;
}

public static void main(String[] args) {
Integer i = new Integer(129);
add3(i);
System.out.println(i);
}
}
java只支持值传递,但是此处传递的不是一个Integer对象的引用吗?有点不解,请大神解惑。
最后输出是多少呢?
...全文
147 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
soton_dolphin 2017-09-07
  • 打赏
  • 举报
回复
对于原始类,传递的是值本身,对于引用类,传递的是引用的内存地址的值
李德胜1995 2017-09-06
  • 打赏
  • 举报
回复

public class Test {

	public static void add3(Integer i) {
        Integer value = i;//传递的是main方法里面i的地址,value和i指向堆中的同一地址
        /*Integer型的value和1进行运算时候使用intValue()方法得到int型的值
         * 也就是value=Integer.intValue(value)+1;
         * 赋值给value时使用Integer.valueOf()方法
         * 使value重新指向一个新的对象。。。
         * 这个过程根本没有对一开始指向的i的地址的值进行改变,而是重新指向另一个新的对象
         * 所以输出还是129
         * */
        value += 1;
        
       
    }

    public static void main(String[] args) {
        Integer i = new Integer(129);
        add3(i);
        System.out.println(i);
    }
}

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧