A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

基本数据类型和引用数据类型的传递值有什么区别?

6 个回复

倒序浏览
对于基本数据类型,传递的是实参的值,形参的改变不会影响实参
对于引用数据类型,参数值是数组的引用,给方法传递的是这个引用,形参的改变会直接影响实参
例如下面的代码就反应这种特征

  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
艺多不压身丶 + 1 赞一个!

查看全部评分

回复 使用道具 举报
基本数据类型按值传递  相当于复制了一份过去  引用数据按地址传递  两个地方根据地址使用同一份数据  如被更改,则原有数据也会更改  例如数组在传递数组时  如果接收到数组之后  对其修改那么原来的数组也会同时修改  因为它们指向同一个地址
回复 使用道具 举报
一个是传实际的值,一个是传指针。传值情况下不会改变原来的内存,因为只是一份拷贝,至于传指针,其实也是传值,也是指针的拷贝,值不过,传指针比如数组名,可以用*改变指向的数组的值,所以看起来不太一样。其实都只是传值
回复 使用道具 举报
我 是来学习的。我去看看他们是不是都在常量池里。
回复 使用道具 举报
其实你把代码在内存中运行的顺序搞清楚,遇到类似的问题一分析便得出结论了。。。
回复 使用道具 举报
清楚了,谢谢各位技术大牛
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马