面向对象_引用类型_内存分析_垃圾回收JAVA028-033

来源:互联网 发布:域名为什么要解析 编辑:程序博客网 时间:2024/05/04 00:00

来源:http://www.bjsxt.com/
1、S01E028_01面向对象概述
S01E028_01面向对象概述

2、面向对象编程(OOP)的本质
——以类的方式组织代码,以对象的方式组织(封装)数据

对象:是具体的事物
类:是对对象的抽象(抽象 抽出象的部分)
先有具体的对象,然后抽象各个对象之间象的部分,归纳出类,通过类再认识其它对象

3、引用类型
JAVA中除基本类型之外的变量类型都称之为引用类型;JAVA中的对象是通过引用对其操作的。

4、JAVA中方法的参数传递是:值传递!

5、内存分析
栈(自动分配连续的空间,后进先出):
——存放:局部变量
堆(不连续的空间):
——存放:new出来的对象
方法区(堆内的区域,也是堆):
——存放:类的信息(代码)、static变量、常量池(字符串常量)等

6、S01E031_01程序执行过程的内存分析

public static void main(String[] args){    //Student:JVM在方法区找类的信息(class文件),没有就在类路径(class.path)找。    //找到再加载(JVM的类加载器CLASS LOADER)。加载后,在方法区就有Student类的信息。    Student s1 = new Student();    s1.name = "高琪";    //栈中开一个栈帧(Stack Frame),在栈帧中执行一个方法,执行完后,栈帧就不存在了    s1.study();    s1.sayHello(马士兵);    //Student类已加载过了    Student s2 = new Student();    //基本数据类型直接赋值,18直接赋值给age,而不是引用地址    s2.age = 18;    s2.name = "老高";}

S01E031_01程序执行过程的内存分析

7、S01E032_01程序执行过程的内存分析

//java Test2//首先加载Test2类public class Test2{    public static void main(String[] args){        Student s1 = new Student();        s1.name = "高琪"//在方法区中的常量池,"高琪"跟Student类中的是同一个(共享)        s1.age = 18;        Computer c = new Computer();        c.brand = "联想";        c.cpuSpeed = 100;        s1.computer = c;        System.out.println(s1.computer.brand);    }}

S01E032_01程序执行过程的内存分析

8、S01E033_01垃圾回收机制
S01E033_01垃圾回收机制

0 0
原创粉丝点击