视频教程地址:
从存储机制到JAVA的数据类型
1、每一种编程语言都需要操纵内存中存储的元素。
- C语言是采用指针的方式操纵内存元素。
- JAVA把元素看作对象,用引用来操纵。
2、在JAVA中,内存被划分为堆和栈来分别存储引用和对象。
例如,String s = new String(abc);
String s 是声明一个引用,存放在栈内存中,引用本质上就是一个对象的地址;
new String(abc)是创建一个对象,存放在堆内存中,具有自身的物理地址。
- 栈内存
栈内存的特点是编译器(javac)会自动释放和分配内存,非常灵活快速。
栈内存的存取速度仅次于cpu内部的寄存器。
栈内存里面的数据可以共享。
栈内存里面的数据大小和生存期必须事先确定。
JAVA程序创建时,JAVA系统必须知道所有引用的确切生命周期,要快速地进行创建和销毁,以便释放和分配内存。
基于JAVA系统对引用的要求和栈内存的特点,所以我们把引用放在栈内存中。
- 堆内存
堆内存是栈内存的一个子集,也就是说从栈内存包含了堆内存。
堆内存内部存储的元素不受JAVA系统的管理,必须由使用者创建,也就是手动new一个,使用后必须由使用者销毁(或者垃圾回收器来销毁)。
堆内存空间分配很灵活,但创建和销毁的速度相对较慢。
对象不影响程序的创建,我们也不需要频繁快速地创建和销毁对象,所以我们把对象放在堆内存里。
我们把需要new来创建的对象叫做引用数据类型,除此之外还有基本数据类型。
3. 、特例:基本类型
- 基本类型的特点
长度固定,不会随着数值的大小而改变物理存储空间的大小,比如说整型int,不论是存放数字1,还是存放数字100000,占用的空间都是32字节。
这样固定基本类型的长度是为了更高的可移植性,避免硬件平台的变化而导致数据无法存储。
基本类型不是new出来的,也不需要引用,是直接在栈内存中存储的一个值。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容