黑马程序员技术交流社区

标题: java中的值传递本质和引用变量的辨识 [打印本页]

作者: 斑点狗    时间: 2015-10-8 21:58
标题: java中的值传递本质和引用变量的辨识
    Java编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。

      方法的参数传递:
      ①形参:方法声明时,方法小括号内的参数
      ②实参:调用方法时,实际传入的参数的值
   
     规则:java中的参数传递机制:值传递机制
     ①形参是基本数据类型的,将实参的传递给形参的基本数据类型的变量
     ②形参是引用数据类型的,将实参的引用类型变量的值(对应的堆空间的对象的实体的首地址值)传递给形参的引用。
本质:都是传递给实参的都是其中的值。

Question1:引用变量是否属于对象?
    ArrayList myAL = new ArrayList();
      myAL本身不是对象,而是对对象的引用。对象在内存中被创建,JAVA中只能通过使用对象变量(myAL)来引用内存中的对象。[实际上(myAL)是一            个指向内存的指针
      而ArrayList myAL=new ArrayList();有两个意思
                1、生成ArrayList()对象
                2、把ArrayList()对象的引用付给myAL
          ArrayList myNextAL=myAL;
          this statement没有生成新的对象,只是又把myAL付给myNextAL,这两个引用都指向同一个ArrayList对象




作者: 贝克街    时间: 2015-10-10 20:03
挺好的,赞一个!
作者: 斑点狗    时间: 2015-10-10 20:52
贝克街 发表于 2015-10-10 20:03
挺好的,赞一个!

谢谢你,你也加油啊!争取早点进黑马!
作者: Jared    时间: 2015-10-10 21:11
字符串类型一旦被定义就不能改变了  只能是引用改变

作者: 斑点狗    时间: 2015-10-10 21:35
Jared 发表于 2015-10-10 21:11
字符串类型一旦被定义就不能改变了  只能是引用改变

恩恩,是啊,StringBuffer、StringBuilder可以改变
作者: 斑点狗    时间: 2015-10-10 21:38
Jared 发表于 2015-10-10 21:11
字符串类型一旦被定义就不能改变了  只能是引用改变

不好意思,刚回复的有点问题,不只是字符串类型,引用类型的变量都属于引用改变,本质还是值传递
作者: blensmile    时间: 2015-10-10 21:41
写的很详细,概括的很全面,,谢谢分享~
作者: 徐涛涛    时间: 2015-10-10 21:44
路过学习一下
作者: 斑点狗    时间: 2015-10-10 21:44
徐涛涛 发表于 2015-10-10 21:44
路过学习一下

恩恩,大家都加油!
作者: 小曦    时间: 2015-10-14 14:08
挺不错的!
作者: xiaoxiao147    时间: 2015-10-14 15:55
很好,来学习咯
作者: 俞攀峰1    时间: 2015-10-14 22:33
挺好的,赞一个!
作者: 江湖104    时间: 2015-10-14 22:42
学习了,赞一个,楼主加油!!
作者: 如梦丶似幻    时间: 2015-10-14 23:03
前来学习~~~




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