黑马程序员技术交流社区

标题: 基本数据类型和引用数据类型的传递问题 [打印本页]

作者: yekanghui    时间: 2015-3-16 00:42
标题: 基本数据类型和引用数据类型的传递问题
基本数据类型和引用数据类型的传递值有什么区别?

作者: 执梦而行    时间: 2015-3-16 11:40
对于基本数据类型,传递的是实参的值,形参的改变不会影响实参
对于引用数据类型,参数值是数组的引用,给方法传递的是这个引用,形参的改变会直接影响实参
例如下面的代码就反应这种特征

  1.        class Test {
  2.         public static void main(String[] args) {
  3.                 int x=1;
  4.                 int[] y=new int[10];
  5.                 m(x,y);
  6.                 System.out.println("x is "+x);
  7.                 System.out.println("y[0] is "+y[0]);
  8.         }
  9.         public static void m(int number,int[] numbers) {
  10.                 number=1001;
  11.                 numbers[0]=5555;
  12.         }
  13. }
复制代码

作者: 吐槽ing    时间: 2015-3-16 16:55
基本数据类型按值传递  相当于复制了一份过去  引用数据按地址传递  两个地方根据地址使用同一份数据  如被更改,则原有数据也会更改  例如数组在传递数组时  如果接收到数组之后  对其修改那么原来的数组也会同时修改  因为它们指向同一个地址
作者: 一步一个脚印    时间: 2015-3-16 20:16
一个是传实际的值,一个是传指针。传值情况下不会改变原来的内存,因为只是一份拷贝,至于传指针,其实也是传值,也是指针的拷贝,值不过,传指针比如数组名,可以用*改变指向的数组的值,所以看起来不太一样。其实都只是传值
作者: 齐小灰同学    时间: 2015-3-16 21:01
我 是来学习的。我去看看他们是不是都在常量池里。
作者: mark.tian    时间: 2015-3-16 21:08
其实你把代码在内存中运行的顺序搞清楚,遇到类似的问题一分析便得出结论了。。。
作者: yekanghui    时间: 2015-3-23 00:57
清楚了,谢谢各位技术大牛




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2