JAVA中的数值引用
java中的基础数据类型(byte,int,boolean,long,double,char,short)都为数值引用,在参数传递时只传递内存值,不会将内存地址进行传递。
JAVA中的引用传递
首先要明白什么是引用
Object a=new Object();
在对象a创建时,等号左边创建Object类的引用a,通过类名定位class文件,创建class对象,引用存放着a的class对象地址。当new Object()时,jvm在堆中为a对象分配足够的内存空间。对象名就是其引用。用来引用对象堆内存中的实例。
在java的封装类中,其对象实例都是引用传递,Object b=a,可将a引用传递给b,因为b对象没有new操作,自然也没有为其对象在堆中分配内存,只是加载了Object类。b和a代表同一内存中的对象实例。
但是在所有封装类中,string类不同,string的声明中都不需要new来声明。声明类型和基础数据类型相同,string内部实现就在内次类加载的时候就进行new操作,string中不存在引用传递,每次对string的修改都是new新的string对象,在进行赋值修改。
在非封装类中,数组属于引用传递,因为数组名称存储这数组的地址,所以与引用传递相同。