美文网首页
Java中类的定义以及内存分配

Java中类的定义以及内存分配

作者: honeyman | 来源:发表于2015-12-26 14:24 被阅读0次
    public class Test
    {
        private static int sid = 0;
        private static int x = print("this is static variable x");
        private int id;
        Test(int _id)
        {
            id = _id;
        }
    
        void PRINT()
        {
          System.out.println("sid: "+sid+"id"+id);
        }
    
        public static int print(String s)
        {
            System.out.println(s);
            return 20;
        }
    
        public static void main(String args[])
        {
            System.out.println("this is main");
            Test test = new Test(5);
            test.PRINT();
        }
    }
    

    通过这个简单的例子来回顾一下内存分配。
    java中内存主要包含4块:

    heap(堆内存):除了基本类型的值,其他被new出来的变量都存储在这里。

    stack(栈内存):局部方法定义的变量都存储在这里。方法作用域结束,变量之后会被垃圾收集机制搞定。

    data segment:静态变量或是常量存放区。

    codesegment(方法区):存放方法。

    刚才又查了查资料,发现这里面还有一些不知道知识。

    静态成员变量和静态代码块与main函数的执行先后顺序是什么?

    为此将代码改成如此。
    执行的结果是:

    this is static variable x

    this is main

    sid: 0 id: 5

    用下图来说明内存分配过程:
    1:①②③④⑤这几个在main方法执行前已经预加载好了(它们之间的顺序我还没搞懂)。
    2:执行了静态方法print。打印出this is static variable x。
    3:main方法执行,打印出this is main。
    4:在stack分配test存储空间,为构造方法在stack中分配临时变量空间(构造方法结束,便消失),完成对象初始化。
    5:接着调用PRINT方法,打印。


    相关文章

      网友评论

          本文标题:Java中类的定义以及内存分配

          本文链接:https://www.haomeiwen.com/subject/fmhbhttx.html