当前位置: 首页 > news >正文

高新手机网站建设公司谷歌手机版下载安装

高新手机网站建设公司,谷歌手机版下载安装,个人网站主题,义乌做网站公司在JAVA中#xff0c;有六个不同的地方可以存储数据#xff1a; 1.寄存器#xff1a;最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈#xff1a;存放基本类型的变量数据和对象的引用#xff0c;但对象本身不存放在栈中#xff0c;而是存放在堆有六个不同的地方可以存储数据 1.寄存器最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈存放基本类型的变量数据和对象的引用但对象本身不存放在栈中而是存放在堆new 出来的对象或者常量池中字符串常量对象存放在常量池中。 3. 堆存放所有new出来的对象。 4. 静态域存放静态成员static定义的 5. 常量池存放字符串常量和基本类型常量publicstatic final。 6. 非RAM存储硬盘等永久存储空间 这里我们主要关心栈、堆对于 栈和常量池中的对象可以共享对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的当没有引用指向数据时这个数据就会消失。堆中的对象的由垃圾回收器负责回收因此大小和生命周期不需要确定 具有很大的灵活性。 对于字符串其对象的引用都是存储在栈中的如果是 编译期已经创建好(直接用双引号定义的)的就存储在常量池中如果是运行期new出来的才能确定的就存储在堆中 。对于equals相等的字符串在常量池中永远只有一份在堆中有多份。 newString(“China”); 对于通过new产生一个字符串 假设为”china”时会先去常量池中查找是否已经有了”china”对象如果没有则在常量池中创建一个此字符串对象然后堆中再创建一个常量池中此”china”对象的拷贝对象。这也就是有道面试题Strings new String(“xyz”);产生几个对象一个或两个如果常量池中原来没有”xyz”,就是两个。 局部变量的数据存在于栈内存中。栈内存中的局部变量随着方法的消失而消失。(形式参数是局部变量) 成员变量存储在堆中的对象里面由垃圾回收器负责回收 Java内存分配中的栈 在函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配。当在一段代码块定义一个变量时Java在栈中为这个变量分配内存空间当该变量退出其作用域后Java会自动释放掉为该变量所分配的内存空间该内存空间可以立即被另作他用。栈的优势是存取速度比堆要快仅次于寄存器栈数据可以共享。但缺点是存在栈中的数据大小与生存期必须是确定的缺乏灵活性。 栈有一个很重要的特殊性就是存在栈中的数据可以共享。假设我们同时定义 int a 3; int b 3 编译器先处理int a 3首先它会在栈中创建一个变量为a的引用然后查找栈中是否有3这个值如果没找到就将3存放进来然后将a指向3。接着处理int b 3在创建完b的引用变量后因为在栈中已经有3这个值便将b直接指向3。这样就出现了a与b同时均指向3的情况。这时如果再令a4那么编译器会重新搜索栈中是否有4值如果没有则将4存放进来并令a指向4如果已经有了则直接将a指向这个地址。因此a值的改变不会影响 到b的值。要注意这种数据的共享与两个对象的引用同时指向一个对象的这种共享是不同的因为这种情况a的修改并不会影响到b, 它是由编译器完成的它有利于节省空间。而一个对象引用变量修改了这个对象的内部状态会影响到另一个对象引用变量。 什么是引用变量 引用变量就相当于是为数组或对象起的一个名称以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 回过头再来看代码 实际上里面分解成了四个步骤。 Case cc; 在栈内存里面开辟了空间给引用变量cc这时ccnull ccnew Case();1. new Case()在堆内存里面开辟了空间给Case类的对象这个对象没有名字 2. Case()随即调用了Case类的构造函数 3. 把对象的地址在堆内存的地址给引用变量cc这样我们就明确了 Java中这里的“”并不是赋值的意思而是把对象的地址传递给变量 对象创建出来其实连名字都没有因此必须通过引用变量来对其进行操作。 Java内存分配中的堆 堆内存用来存放由new创建的对象和数组。在堆中分配的内存由Java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后还可以在栈中定义一个特殊的变量让栈中这个变量的取值等于数组或对象在堆内存中的首地址栈中的这个变量就成了数组或对象的引用变量。引用变量就相当于是为数组或对象起的一个名称以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。引用变量就相当于是为数组或者对象起的一个名称。 引用变量是普通的变量定义时在栈中分配引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外数组和对象本身占据的内存不会被释放数组和对象在没有引用变量指向它的时候才变为垃圾不能在被使用但仍然占据内存空间不放在随后的一个不确定的时间被垃圾回收器收走释放掉。这也是 Java 比较占内存的原因。堆的优势是可以动态地分配内存 大小生存期也不必事先告诉编译器因为它是在运行时动态分配内存的Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是由于要在运行时动态分配内存存取速度较慢。 实际上栈中的变量指向堆内存中的变量这就是Java中的指针
http://www.tj-hxxt.cn/news/142311.html

相关文章:

  • 做网站需要多少兆空间大型网站开发流程和步骤
  • 网站系统建设项目做网站推广维护需要学些什么
  • 专业建站服务建站网网站建设对公司来说重要吗
  • 做个网站多少费用wordpress能做成app吗
  • 成都彩蝶花卉网站建设案例两个wordpress公用用户
  • 佛山网站建设公司大全网速
  • 做网站用什么服务器比较好广州网站优化服务商
  • 佛山网站公司网站建设进项填那个服务
  • 企业网站的栏目设置网站推广软件ky99
  • 怎样不让网站自动跳转wap找代理产品上哪个平台
  • 中英文的网站设计中国工业设计在线官网
  • 基于jsp的网站开发开题报告龙海网站建设
  • 网站建设 选中企动力制作一个静态网页
  • 美食网站怎样做锅包肉seo关键词优化的技巧和方法
  • 基于php电子商务网站开发西安企业建站公司
  • 网站utf8乱码哪里可以接网站开发项目做
  • 怎么免费建立自己的网站国家城乡建设网站
  • 企业品牌网站建设报价seo电商运营是什么意思
  • php 怎么做 网站吗小说网站开发数据库
  • 志愿服务网站开发夫妻工作室网站建设
  • 网站建设与管理简介杭州医疗器械网站制作
  • 一起做网站17杭州女装青岛栈桥介绍
  • 互联网公司网站模板一级a做爰片凤凰网站
  • 大型门户网站开发教程优化网站 提高查询
  • 静态网站提交表单怎么做北京网站建设一般多少钱
  • 建外贸企业网站国际新闻快报社
  • 中专网站建设与管理就业前景建站方法
  • 网站源码素材优化大师是干什么的
  • 长沙本土网站建设公司东莞微信网站建设信息
  • 网站推广seo方法浏览器编程语言