所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

传入对象时是传值还是传引用?

发布时间:2020-04-12 08:41:53

资讯分类:传入  引用  对象  这段  可用  实现了
传入对象时是传值还是传引用?

可以考虑下面这段代码,它实现了一个Stack:classStack{privateintStackSize=10;privateint[]intArr=newint[stackSize];privateintindex;//Stack中的下一个可用位置。

传入对象时是传值还是传引用?

记住一点,基本类型是传值,引用类型是传引用,对象是引用类型,所以传的是引用。

那么可能有人会对如下的执行结果产生疑问:public static void main(String[] args) {

    String str = "s";

    doStr(str);

    System.out.println(str);

    Integer integer = new Integer(1);

    doInt(integer);

    System.out.println(integer);

}

public static void doStr(String str) {

    str = "sss";

}

public static void doInt(Integer integer) {

    integer = 2;

}

输出结果为:

s

1

String和Integer明明是引用类型,为什么值没有被改变?这里要说的就是这两个的特殊性,str = "sss"这一行执行的操作是在常量池寻找匹配的字符串指向该引用,如果没有会执行 str=new String("sss"),这是String类型的特殊性,有兴趣可以学习一下。 而integer = 2这一行执行的是integer = new Integer(2),这就是自动装箱操作,同理,所有基本类型对应的对象类型也是同样的。也就是说,上述操作已经不是对原来被引用对象的操作了,所以对象的值没有改变。

留言与评论(共有 0 条评论)
   
验证码:
Top