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

来源: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值