java程序执行过程分析



         接下来,以java程序执行时内存里数据指向为主线,来复习一下相关的知识。

       1、java中除了基本数据类型,只有引用类型。且所有的引用类型变量都是占有四四个字节。

       2、当new一个对象后,且为默认构造函数,属性的初值判断如下

  六种数值类型:小数0.0,其余为0。char类型为/000,boolean类型为false;对于

引用数据类型比如String 初值为null。

3、对象都是通过引用来完成调用的。

掌握了上面的开始内存分析了。

        1、栈:存放局部变量

             堆:存放new出来的实例对象

            方法区:类的信息,static变量,常量池。

 可以看到:1、栈区是连续的,堆区不是连续的。

 2、执行Student s1,发现方法区目前为空,变到class文件里找有没有Student这个类,有便把类的信息,属性,常量,方法等加载到方法区。如果没有,就抛出class没有找到的异常(ClassNotFoundException)。 类当再次有引用数据Student s2便会直接使用方法区的类信息,而不需要再吃从class文件加载

class Student{

 String name;

int id;

int age;

String gender;

float weight;

public void study(){

Syso(name+"正在学习");

}

public void sayHello(String name){

Syso(this.name+"对+"name"+说,你好");

}

}

class TestMemory{

Student s1=new Student();

s1.name="小钱";

s1.study();

s1.sayHello("小李");

Student s2=new Student();

s2.name="小马";

s2.age=77;

}

猜你喜欢

转载自1509930816.iteye.com/blog/2217489