类、对象以及jvm运行内存解析

一、JVM内存的分析:

第一步:存放在硬盘上的程序首先要被加载到内存空间中。

第二步:内存中的jvm找到程序中main函数作为入口,然后开始执行。

第三步:执行过程中的内存管理:内存分为四个部分:

栈内存:用来存放主函数中变量、局部变量、引用。stack。

堆内存:用来存放new出来的对象,heap

数据区(方法区、共享区):data segment
存放静态变量,方法

代码区:code
segment:用来存放代码。

二、对于面向对象、类、对象的理解:

1.   
我们知道面向过程强调的是一系列的动作,面向对象强调是是结果,例如:拿打开冰箱这件事来说,如果我们以面向过程的语言去理解的话:第一步,打开冰箱;第二步;把事物放进去;第三步,把冰箱关上。这就是面向过程,如果我们以面向对象的思想去理解的话,冰箱就是一个对象,他拥有打开,可以存放东西,关闭的方法,我只要用冰箱去调用这些方法就行了。那就是

冰箱、打开();

冰箱、存放食物();

冰箱、关闭();

这就是面向对象的思想,我们眼中只有一个个对象,它的功能实现与我们调用者无关,我们只要使用它们的功能就行了。

举例二:我们打开门,然后进来,把门关上,这是一个过程,而面向对象的思想就是,门是一个对象,拥有打开,关闭的方法,我们只要去调用就行了,至于如何实现,那是门的事情,与我们调用者无关。

2.类与对象,在现实生活中,存在一个个特征鲜明的个体,我们称他们为对象,就是说万事万物都是对象,张三、李四、一只狗,一只猫,它都是与众不同的,如果我们仔细观察事物,会发现,事物之间是存在共性了,张三和李四都是人,都属于人这个类,然后和一只狗之间有都是动物,在往上,和一棵树又都是生物,所以类是一个抽象的概念,它是对一些对象共性的抽取。而对象时现实生活一个个活灵活现的个体。

既然类是很多对象共性的抽取,那么某一类事物肯定又有一些属性,或者行为方式;

举例:人类,有姓名,年龄,国籍,性别,   
都吃饭,走路,睡觉,说话,,等等方式,

按照类中的属性和方法对号入座填上数据,那么一个具体的对象就创建出来了

这样我们就可以把这个类给创建出来了:创建类用class 
类名{}

class  
Person{//定义一个类

String name;//这些都是类中的属性

int age;

String country;

void eat(){

System.out.println("吃饭");

}

}

四、创建对象过程:

1、必须使用new来创建一个对象,实际new
+构造方法

2、使用对象属性时,对象名。成员变量

3、使用对象方法时,对象名。方法();

4、同一个类的每个对象有不同的成员变量的存储空间

5、同一个类中的每个对象共享该类中的方法

五、调用方法的分类:

(1)无参无返回类型方法

public void   eat(){

System.out.println("吃饭");

}

Person p=new Person();

p.eat();

(2)有参数无返回值类型方法

public void eat(String s){

System.out.println("我在"+s+“上吃饭”);

}

Person p=new Person();

p.eat("桌子");

(3)无参有返回类型方法

public String getName(){

return name;

}

(4)有参有返回类型

public int
print(int  x){

return   2*x;

}

六:几个关键字的用法:

1、return 
返回值类型和方法指定类型保持一致,这个值总是确定的。

return的另一个作用是结束方法的执行。

2.this
关键字:表面上是区分成员变量和参数名重名的问题,其实this可以看做一个变量,就是当前值的调用,比如讲台上有一把椅子,它就代表this。那个老师来上课,那个老师就坐在那里,而在java中,只要有对象来调用这个函数,那么this,就代表当前调用本函数的对象。

上一篇:符号表(Symbol Tables)


下一篇:多线程和Boost::Asio