美文网首页
Java学习之传递问题

Java学习之传递问题

作者: 玉圣 | 来源:发表于2017-05-26 16:28 被阅读10次

先看下面一段程序:

class Chuandi  
{  
      public static void main(String [] args)  
      {  
      int a = 10;  
      int[] m = new int[2];  
      m[0] = 50;  
      m[1] = 100;  
      System.out.println("代入方法前a是 " + a +",m[0]是 "+ m[0] +",m[1]是 " + m[1]);  
      print3x(a);  
      setInts(m);  
      System.out.println("代入方法后a是 " + a +",m[0]是 "+ m[0] +",m[1]是 " + m[1]);  
      }       
      static void print3x(int x)  
      {  
      x = 3*x;  
      System.out.println("代入方法中3a是 " + x);  
      }  
      static void setInts(int[] ints)  
      {  
      for(int n=0;n<ints.length;n++)  
          {  
          ints[n] = 3*(n+2);  
          System.out.println("代入方法中m["+n+"]是 "+ints[n]);  
      }    
      }  
}

打印出来的结果是怎么样的呢?代入方法前后的a改变了吗?数组m呢?我们来看看打印的结果:

1356269214_8814.jpg

从结果可以看出,方法内部对a的修改改变了a的值,但是a在代入方法前后的值并没有改变;而数组m不同,通过构造的方法,改变了数组m的值。

当把一个基本变量的值传递给一个方法时,方法得到的只是这个变量的一个副本,并没有真正改变这个变量所在内存中的值,所以在方法返回之后,用来储存这个方法的副本的内存被回收,因而这个副本也随之不在存活。而对于数组来说,当使用new这个关键字产生一个数组时,分配下来一块内存空间,m这个变量只是作为一个引用,从创建的这块内存中引用这些值。同样声明另外一个数组n;有:“ n = m; ”这行代码,从某种意义上讲,是第二个引用指向第一个引用所指向的同一块内存空间,就是当前的数组。把一个数组引用作为方法的参数来传递时,方法就可以使用该引用改变数组中的值。由此可见,对数组所做的修改是永久性 的。

这就是基本变量和数组(当然也包括对象)传递的区别。

相关文章

  • Java学习之传递问题

    先看下面一段程序: 打印出来的结果是怎么样的呢?代入方法前后的a改变了吗?数组m呢?我们来看看打印的结果: 从结果...

  • C语言 函数传参的理解

    C语言有点东西 不像JAVA 不需要复杂考虑参数传递问题 java就两种参数传递方式 值传递AND引用传递...

  • Java学习记录--参数传递分析

    Java学习记录--参数传递分析 标签(空格分隔): java 今天做项目,发现了一个问题,当String作为参数...

  • Java参数传递问题

    关于Java参数传递问题的一点思考, 主要关注以下两个问题: 1. 参数是如何传递的? 参数通过复制的方式传递。 ...

  • Java 参数传递问题

    Java参数传递 给出了基本类型和引用类型参数传递时行为的示例,并给出了String类型作为参数传递时表现出的和一...

  • Java函数参数是拷贝传递还是引用传递

    初学Java遇到一个诧异的问题,Java函数的对象参数到底是拷贝传递还是引用传递,为了验证这个问题,写了以下的一个...

  • 面试题汇总

    1.Java基础面试问题 Java基础之基础问题 Java基础之面向对象 Java基础之数据结构 Java基础之I...

  • java到底是值传递还是引用传递

    以下内容仅供自己学习,均参考网络。 Java 到底是值传递还是引用传递? - 知乎 浅析Java中的final关键...

  • 文章目录

    Markdown学习 Markdown学习 Java学习 Servlet学习笔记 Java问题 Tomcat问题修...

  • 为什么大家都说java是值传递?

    关于java中值传递与引用传递的问题一直以来都有很多人讨论。刚开始学java的时候,就听老师说,java中只有值传...

网友评论

      本文标题:Java学习之传递问题

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