黑马程序员技术交流社区
标题: 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
谢谢你,你也加油啊!争取早点进黑马!
作者: Jared 时间: 2015-10-10 21:11
字符串类型一旦被定义就不能改变了 只能是引用改变
作者: 斑点狗 时间: 2015-10-10 21:35
恩恩,是啊,StringBuffer、StringBuilder可以改变
作者: 斑点狗 时间: 2015-10-10 21:38
不好意思,刚回复的有点问题,不只是字符串类型,引用类型的变量都属于引用改变,本质还是值传递
作者: blensmile 时间: 2015-10-10 21:41
写的很详细,概括的很全面,,谢谢分享~
作者: 徐涛涛 时间: 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 |