基本数据类型
整数
浮点
布尔
字符
引用数据类型
除了基本数据类型都是
本质区别
1.基本数据类型
先来看一行代码
public class Test1 {
public static void main(String[] args) {
int a = 20;
}
}
在这行代码运行时,首先会在堆内存中开辟一个空间,记录int a = 20;
![](https://i-blog.csdnimg.cn/blog_migrate/72bc2e11ed2a53839192c3545b4c229d.png)
int表示数据类型,10是真真实实的存在于这个空间的
此时当我们再定义一个double b = 23.12;
public class Test1 {
public static void main(String[] args) {
int a = 20;
double b = 23.12;
}
}
这个时候内存图是这样的
![](https://i-blog.csdnimg.cn/blog_migrate/1c49383855483b689a9433352550d01a.png)
2.引用数据类型
简而言之引用数据类型就是拿其他的东西来用的
先看一行代码
public class Test1 {
public static void main(String[] args) {
Student s = new Student();
}
}
student这一行中的 s 就是一个引用数据类型
![](https://i-blog.csdnimg.cn/blog_migrate/77e3dbc21386a0dfc4737109903ecfc0.png)
student 表示可以存储student这个类的对象的地址值,s仅仅是一个名称
s仅仅记录的是一个地址值,真正的数据是记录在堆内存之中的,s表示引用数据类型可以理解为引用其他内存中的数据
数组的内存图
老规矩,先来看一行代码
public class Test1 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6};
}
}
他的内存图是这样的
![](https://i-blog.csdnimg.cn/blog_migrate/976d02decdc02cd2fdd90c01cd08fea3.png)
在栈内存int[]记录的是数据类型是数组
arr记录的是堆内存中的地址值
sout(arr)的运行结果是这样子的
[I@4eec7777
表示确实是地址值
数据在堆内存中存储时,会开辟一个小空间来记录这些数据
通过索引可以获取到数组中对应索引的具体值
小结
基本数据类型:数据值是储存在自己的空间之中的
特点:赋值给其他变量,也是赋值的真实的值
引用数据类型:数据是存储的其他空间的,自己空间存的是地址值
特点:赋值给其他变量,赋的是地址值
感悟:课程虽然是比较长而且又多又繁琐,但是认认真真的听下来,努力理解之后就会明白老师的用心良苦,很感谢阿伟老师!