资讯专栏INFORMATION COLUMN

这题不会!别说你懂值传递与引用传递

QLQ / 3167人阅读

摘要:阅读原文这题不会别说你懂值传递与引用传递即使工作过一阶段的人也不一定能够理解是值传递还是引用传递。概念值传递方法调用时,实参的数值被复制到另一个变量,然后传递复制的副本。

阅读原文:这题不会!别说你懂值传递与引用传递

即使工作过一阶段的人也不一定能够理解Java是值传递还是引用传递。若不信,那么来看看下面这道题。

题目

请先写出你的答案,然后对比下输出结果。

public class Test {
    private String str = new String("码上实战");
    private char[] chars = {"星", "期", "一"};
    private int num = 2019;


    private void change(String cStr, char[] cChars, int cNum) {
        cStr = "欢迎关注->码上实战";   //第一步
        cChars[2] = "二";        //第二步
        cNum = 2020;        //第三步
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.change(test.str, test.chars, test.num);

        System.out.println("str=" + test.str);
        System.out.println("chars=" + test.chars[0] + "," + test.chars[1] + "," + test.chars[2]);
        System.out.println("num=" + test.num);
    }
}

输出结果

str=码上实战
chars=星,期,二
num=2019
值传递还是引用传递?

首先,明确的告诉大家,Java只有值传递,没有引用传递!无论理解不理解,先记住这点。

概念

值传递

方法调用时,实参的数值被复制到另一个变量,然后传递复制的副本。

引用传递

方法调用时,实际参数的地址直接传递到方法中。

对比

- 值传递 引用传递
区别 创建副本 不创建副本
改变 函数中无法改变实际参数 函数中可以改变原始实际参数

注意

这下你看清了吧,值传递和引用传递的真正区别是:传递时,实际参数是否复制了副本! 不要去管参数是基本类型还是引用类型。

解题

为什么char数组中改变了?

因为 实参和形参指向的是同一个数组对象,方法中改变的不是参数本身,而是改变了它所指向的对象。

错误的区分基本类型和引用类型

由题可知,无论是String还是int,即使在方法中都进行改变,但实参都没有改变,所以和参数什么类型没有关系。

如果你有什么问题,欢迎留言交流。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73915.html

相关文章

  • 小而有料的final

    摘要:阅读原文小而有料的想听文章核心内容语音对话版,请到微信公众号码上实战,阅读原文这块肉虽然小,但不可不知,因为不仅面试可能会问,实际中也常使用。参考书籍编程思想深入理解虚拟机更多精彩技术文章尽在微信公众号码上实战 阅读原文:小而有料的final(想听文章核心内容语音对话版,请到微信公众号——码上实战,阅读原文) final这块肉虽然小,但不可不知,因为不仅面试可能会问,实际中也常使用。就...

    Baoyuan 评论0 收藏0
  • 不知道层叠,别说你懂CSS

    摘要:知道存在是很有用的,这样当你在别人的代码中遇到它时,你就知道它是什么了。如上面所示的示例所示,元素选择器具有很低的特殊性。类选择器具有更高特殊性,所以将战胜元素选择器。个位在整个选择器中每包含一个元素选择器或伪元素就在该列中加分。 在实际的工作中,我们可能还有些疑惑,当有多个选择器作用在一个元素上时,哪个规则最终会应用到元素上?其实这是通过层叠机制来控制的,这也和样式继承(元素从其父元...

    izhuhaodev 评论0 收藏0
  • CSS自定义属性 —— 别说你懂CSS相对单位

    摘要:前段时间试译了的好书,其中的第二章,书中对的讲解和举例可以说相当全面,看完之后发现自己并不太懂相对单位,也希望分享给大家,所以有了这个译文系列。 showImg(https://segmentfault.com/img/bVbdOMr?w=920&h=450); 前段时间试译了Keith J.Grant的CSS好书《CSS in Depth》,其中的第二章《Working with r...

    JinB 评论0 收藏0
  • 视口相关单位的应用 —— 别说你懂CSS相对单位

    摘要:还有视口相关单位,依赖浏览器的视口大小来定义长度的。如果你不熟悉视口相关单位的话,在这里简单介绍一下。笔记视口相关单位对于大多数浏览器还是一项比较新的特性,所以当你试图把这个特性和其他样式混搭时,有可能会有一些很奇怪的。 前段时间试译了Keith J.Grant的CSS好书《CSS in Depth》,其中的第二章《Working with relative units》,书中对rel...

    lbool 评论0 收藏0
  • 无单位数字和行高 —— 别说你懂CSS相对单位

    摘要:无单位数字和行高有一些属性可以接收不带单位的数值意思就是一个不带长度单位的数字,如和等于,等于,如此类推。警告不带单位的只可以表示长度单位和百分比的值,譬如和。段落继承了的行高。长度有两种类型绝对的和相对的。 前段时间试译了Keith J.Grant的CSS好书《CSS in Depth》,其中的第二章《Working with relative units》,书中对relative ...

    Airmusic 评论0 收藏0

发表评论

0条评论

QLQ

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<