🌄 斩破低山雾,真见高梧桐。
🍃 逆旅何所惧,快哉万里风。
✍️ 这里是低山高梧桐
❤️ 如有谬误,欢迎斧正
引用类型,常见的比如数组和对象,很多友友都没能理解引用类型的含义
接下来就让我给你讲讲
引用类型,学过c语言的朋友们都知道,引用类型就像指针一样
本质上就是一个存放地址的变量
等号左边是变量,等号右边才赋值
比如对象
//创建对象变量,并实例化对象
Student s = new Student();
//创建对象变量
Student s;
//对象变量实例化
s = new Student();
看出来上面的区别了吗?
不管是对象还是基本类型的变量,实际上都是通过变量来存储或实例化对应的内容的
既然是变量,那么在变量创建时,就会开辟一片内存空间
//尽管不初始化或实例化,对象都会开辟内存空间
int a;
Student s;
这就是等号左边的意义,指的是开辟内存空间,只不过在没有初始化或实例化的情况下,这片内存空间就像一片空地一样,什么也没有。
但是等号右边就是完成这个存放东西的使命的
//在开辟的空间中,存放int类型的数字1
int a = 1;
//在开辟的空间中,存放Student类型的对象的地址
Student s = new Student();
现在很一目了然了吧
基本类型和引用类型的区别就是
在设定好的变量中存放的一个是值,一个是地址。
//a的内存空间中
1
//s的内存空间中
0x123456
引用类型的存放内容 - 好比一条超链接
引用类型存放的地址内容指向的也是一片内存空间
如果你学过虚拟机就会知道,但是引入过多的概念会影响友友们理解
指向的内存空间中存放的才是对象的成员属性和成员方法
如果基本类型的变量是在空地上放一个铲子
工具 工具变量 = 铲子;
那么引用类型的变量就是在空地上放一张藏宝图
宝藏需要自己照着藏宝图寻找
宝藏 宝藏对象 = new 宝藏();
如果你还不能理解,那么引用类型就像下面插入的超链接,我不直接把一段文字放在下面,而是存一个超链接,你需要看的话,就请你自己去找吧。
数组对象分不清?有无下标很重要
我发现数组对象很多同学听不太懂
其实它们在构建数组变量时就出现区别了
想一下我们初学数组时,是不是提供三个构建对象的方案:
int [] arr1;
int [] arr2 = new int[4];
int [] arr3 = {1,2,3,4};
这三个类型区别很大,就像下图这样
所以第一种情况
int [] arr1;
它的指向为空,如果你想对其操作,会报空指针异常
下标表示数组中的单个数据,无下标表示数组对象
如题,这两种情况是不一样的
System.out.println(arr);
System.out.println(arr[0]);