Java基础知识_内存

前述:利用一段较为充足暑假时间,对以前的Java学习进行一个系统性的回顾,对于部分知识点进行记录和积累。

Java中的内存

一 Java中的内存划分:

Java中内存主要划分为五部分

  • 栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈当中运行
    • 局部变量:方法的参数,或者是方法{}内部的变量
    • 作用域:一旦超出作用域,立刻从栈内存当中消失
  • 堆(Heap):凡是new出来的东西,都在堆当中
    • 堆内存里面的东西都有一个地址值:16进制
    • 堆内存里面的数据,都有默认:
      • 如果是整数    默认为0
      • 如果是浮点数   默认为0.0
      • 如果是字符    默认为‘\u0000’
      • 如果是布尔    默认为false
      • 如果引用类型  默认为null
  • 方法区(Method Area):存储.class相关信息,包含方法的信息。
  • 本地方法栈(Native Method Stack):与操作系统相关。
  • 寄存器(PC Register):与CPU相关。

 

二 创建数组时的内存图:

只有一个数组的内存图

  

 

有两个独立数组的内存图

   

 

两个引用指向同一个数组的内存图

   

 

二 :

  

三 :

  

四 :

综上:

代码补充:

 

总结

结合此次设计,在学习过程遇到的错误,因为习惯了网址的书写方式,故在书写文件名的文件路径时,忘记了转义字符的事情。没有在指定文件夹下面发现要存储使用的dat文件,却在程序目录中发现了负责存储的dat文件,故在书写文件路径时\一定要书写成\\通过转义得到所需的\。最后的二进制的输入输出方式,对我所想的结构体类型的数据存储十分友好,并且可以通过循环来不断的取文件中的数据,达到自己的目的。由此,感谢书写过程中,其他博主的帖子给我的指引还有谭浩强老师的教材中的很多理论基础。非常感谢!

 
 
 
Tags: