A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小路飞 中级黑马   /  2013-3-12 07:38  /  2283 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 侯国奇 于 2013-3-13 00:11 编辑

看毕老师讲的时候是挺明白的,自己分析就有些混乱了,该怎么办才好?对于后期做项目有没有大的影响?请指教!
声明一下,我知道内存的划分,只是在对象的初始化过程,对象调用成员过程,内部类等在内存中的运行有些混乱了!

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
我想你应该刚开始看到的  是毕老师讲的  栈内存和堆内存, 记住老师讲的 ,栈内存主要存的是局部变量, 堆内存是存储的是数组和对象,通过NEW建立的实力....
class Array
{
public static void main(String[] args)
    int[] arr=new int[4];//这里的new int[4]就是存在堆里的;
    for(int x=o;x<4;x++)//for的循环定义的变量x就存在栈里;
    {  System.out.println(arr[x]);
    }
}
基础是为后来铺垫的,如果哪里没明白,就要反复弄哪里,否则会对以后的编程思想造成困扰的!加油

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
恩,同样关注中~~~
回复 使用道具 举报
多看几遍毕老师讲的内存部分。

Person示意图.JPG (104.77 KB, 下载次数: 19)

Person示意图.JPG

评分

参与人数 1技术分 +1 收起 理由
猫腻 + 1

查看全部评分

回复 使用道具 举报
抓住几个要点吧即可,程序运行时主要分配数据的区域,1.寄存器(这是最快的存储区域,位于cpu内部,这个咱们先不管)
                                                                           2.栈,用于存储基本数据类型以及对象还用数组的引用,(不同于c++可以再可以再栈中创建对象)
                                                                           3.堆,用于存放所用的java对象
                                                                           4.常量存储,用于存放静态数据
                                                                           5.持久存储,变量会存活于程序之外,不受程序流程控制,常见德 例子就是流对象,你可以将对象写入磁盘,需要的
                                                                              时候在将其取出即可
之后就是变量在内存的作用于域了,举个例子来说吧
  1. {
  2.      String s= new String("is String");
  3. }
复制代码
先是在堆中创建了一个String类的对象,之后再栈中有个变量s指向该对象,程序执行到大括号之后,引用s也就消失了,内存也就释放了,然而s指向的那个对象仍然占据着内存空间,没用一个引用指向他,也就变成了垃圾对象,之后垃圾回收器会在某个时间段对该对象进行回收。
记住一点即可,基础数据类型(4 类8种的数据类型,不包括他们对应的包装类对象),形参,局部变量存储于栈中,对象以及数组存储于堆内存,代码敲多了,量变引发质变
时间长了,你自然会懂,我刚学java的时候和你一样,我还有那些不完整的楼下要记得更贴啊

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
内存中的方法区里存了函数中的所有方法吗,包括构造函数??
求大神解答??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马