数据的存储

数据的存储:
内存的分配有六个地方:
1. 寄存器,期存器是最快的保存区域,因为它位于和其他所有保存方式不同的地方: 处理器内部,然而寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们没有直接的控制权,所以 程序里面没有任何变量是存储在寄存器中的
2. 堆栈(堆)。Java的堆是一个运行时数据区,类的对象从中分配空间,这些对象通过new,newArray等指令建立,堆是由垃圾回收来负责的, 堆的优势是可以动态地分配内存大小,Java的垃圾收集器会自动地收走这些不再使用的数据, 缺点是由于要在运行时动态分配内存,存取速度比较慢
String str = new String("abc");由于str是通过new方式创建出来的,每调用一次new方法就会在堆里面创建一个新的对象。 那么str就会放在堆内存里面
3. 栈。栈和堆都是Java用来在ram中存放数据的地方,程序员不能直接地设置栈或堆
栈的优势是存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生命周期必须是确定的,缺乏灵活性。 栈中主要存放一些基本类型的变量(int ,short,long ,byte,float,double,boolean,char )和对象句柄(String s ;s就是对象句柄)。
String str = "abc";这样获取到的str存放在栈中
由于这种方式获取到的str是现在栈中创建一个队String类的对象引用变量(句柄)str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并将str指向"abc",如果已经有,则直接将str指向"abc".
例子:
String str1 = "abc";
String str2 = "abc";
System.out.println(str1==str2); //true
因为str1和str2都指向栈内存中的"abc"的,所以下面的输出语句为true因为str1和str2都指向栈内存中的"abc"的,所以下面的输出语句为true
String str1 =new String ("abc");
String str2 =new String ("abc");
System.out.println(str1==str2); // false
由于str1和str2都是new出来的对象,两个是堆内存里面不同的两个对象,所以输出为false
4. 静态存储。
静态static是指“位于固定位置”(也在ram中),程序运行期间,静态存储的数据将随时等候调用,可用static关键字只处一个对象的特定元素是静态的,Java对象本身永远都不会置入静态存储空间。
5. 常数存储
6. 非RAM存储。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值