Java的内存分配、数据类型

1、Java的内存分配涉及以下区域:

(1)寄存器(register):用来暂时存放指令、数据和位址。

(2)(stack):存放基本类型数据对象的引用(地址)

(3)(heap):存放new出来的对象数据

注:栈、堆两者的对比优缺点在下面整理出来。

(4)静态域:存放对象中用static定义的静态成员。

(5)常量池:存放常量。

(6)非RAM:硬盘等永久存储空间。

注:RAM(Random Access Memory):随机存储器,短时间存储器(分为动态和静态两种),相较于ROM(Read Only Memory)只读存储器,RAM断电即失忆,而ROM则不会。

寄存器(register)存储器的区别:

	一般意义上理解,寄存器CPU里的存储单元,与CPU离得近,所以CPU在运算时通常都会用寄存器当中转站。存储器是在CPU外部的存储器,分为RAM,ROM。

2、栈(stack)与堆(heap):

:当一段代码块定义一个变量时,Java就在栈(stack)中为这个变量分配内存空间,当变量退出作用域后,Java会自动释放掉为该变量所分配的空间

:用来存放new出来的对象和数组堆通常是一个可以被看做一棵树的数组对象。在堆(heap)中分配的内存,由Java虚拟机(JVM)的自动垃圾回收器来管理。

在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量(引用变量),让其值等于数组或对象在堆内存中的首地址,栈中的这个变量就变成了数组或对象的引用变量。(引用变量,就相当于为数组或对象起了一个名字,以后就可以在程序中用栈的引用变量来访问堆中的数组或对象。)

栈中的变量(引用变量)指向堆内存中的变量,这就是Java中的指针


3、栈、堆的优缺点:

共同点:栈与堆都是用在RAM中存放数据的地方,java自动管理栈和堆。

优点:比堆存取速度快仅次于位于CPU中的寄存器,栈中数据可共享

缺点:栈中数据的大小生存期必须是确定的,缺乏灵活性。

优点:动态分配内存大小。

缺点:存取速度慢

寄存器、RAM中的存取速度的比较:

寄存器>>


4、Java中数据类型:

基本数据类型(8种):又分为

数值型(整型:byte[1字节](-128~127)、short[2字节]、int[4字节]、long[8字节];浮点型:float[4字节]、double[8字节])、

字符型char[2字节]、

布尔型boolean[1字节]

注:Java是一种严格的类型语言,不允许在数值型和布尔型之间转换,而C语言中1可以表示true,0可以表示false。

基本数据类型的数据存于中,追求速度且可共享

复合数据类型(包装类数据类型):又分为

:class

数组

接口:interface

包装类数据存于中,运行时用new语句动态创建内存灵活但费时。

特例:String既可以通过new语句来创建,如:String str=new String("abc");——中创建

   也可以直接String str="abc"来创建。——栈中创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值