美文网首页基础原理
这题不会!别说你懂值传递与引用传递

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

作者: 95a6af369245 | 来源:发表于2019-03-27 17:53 被阅读10次

  即使工作过一阶段的人也不一定能够理解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,即使在方法中都进行改变,但实参都没有改变,所以和参数什么类型没有关系。

相关文章

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

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

  • java 中 值传递和引用传递

    值传递 值传递不能改变 原始数据 引用传递(改变原始参数) 引用传递(此方式重新new 了 所以不会改变)

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • Java 与值传递

    问: 什么是值传递?什么是引用传递?为什么说 Java 中只有值传递? 一、值传递与引用传递 实参与形参: 实际参...

  • Day12-Java

    值传递和引用传递 值传递是值的拷贝, 引用传递是引用的拷贝 String 类型是引用类型, new String ...

  • 引用传递与值传递

    访问变量分引用传递和值传递 值传递 基本数据类型值的传递,就是将变量的值复制给另一个变量。这两个变量是完全独立的。...

  • 值传递与引用传递

    一般数据类型(byte,char,int,float,double,long,String,Integer,Lon...

  • 值传递与引用传递

    JavaScript有6种基本的数据类型,分别是:布尔、null、undefined、String和Number、...

  • 值传递与引用传递

    值传递 在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。 引用传...

网友评论

    本文标题:这题不会!别说你懂值传递与引用传递

    本文链接:https://www.haomeiwen.com/subject/mqdtbqtx.html