1.什么是引用
首先,你要明白什么是变量。变量的实质是一小块内存单元。这一小块内存里存储着变量的值 比如int a = 1; a就是变量的名名,1就是变量的值。 而当变量指向一个对象时,这个变量就被称为引用变量 比如A a =new A(); a就是引用变量,它指向了一个A对象,也可以说它引用了一个A对象。我们通过操纵这个a来操作A对象。 此时,变量a的值为它所引用对象的地址
-
引用数据类型为java两大数据类型之一
-
引用数据型在被床架时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
-
引用数据类型包括:类、接口类型、数组类型、枚举类型、注解类型,字符串型;
-
java另一大数据类型为基本数据类型,其包括包括数值型,字符型和布尔型。
-
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;
就是这个数据的别名,就像一个人的外号一样,你处理这个外号,就是对个人本身的处理 相当于C里面的引用,即&,存有某个类的实例地址
参考:https://blog.csdn.net/qq_14989227/article/details/79589342
2.值类型与引用类型
- 变量初始化
int
num=
10
;
String str=
"hello"
- 变量赋值
num是int基本类型变量,值就直接保存在变量中。str是String引用类型变量,变量中保存的只是实际对象对应的地址信息,而不是实际对象数据。
num=20;
str="java";
于基本类型变量num,赋值运算符将会直接修改变量的值,原来的数据将被覆盖掉,被替换为新的值。对于引用类型变量str,赋值运算符只会改变变量中所保存的对象的地址信息,原来对象的地址被覆盖掉,重新写入新对象的地址数据。但原来的对象本身并不会被改变,只是不再被任何引用所指向的对象,即“垃圾对象”,后续会被垃圾回收器回收。
参考:https://www.cnblogs.com/czx1/p/10665327.html
3.四种引用方式
参考:https://www.cnblogs.com/huajiezh/p/5835618.html