一:类和对象的关系

image.png

从猫类到对象的几种说法: 1:创建一个对象 2:实例化一个对象 3:把类实例化 Java最大的特点就是面向对象

二:类和对象的区别和联系

  1. 类是抽象的,概念的,代表一类事物,比如人类,猫类…即它是数据类型

  2. 对象是具体的,实际的,代表一个具体事物,即是实例.

  3. 类是对象的模板,对象是类的一个个体,对应一个实例

    三:对象在内存中的存在形式

    image.png

    四:对象的使用

    1:属性/成员变量/字段

    <1>基本介绍

  4. 从概念或叫法上看: 成员变量 = 属性 = field ( 字段 ) ( 即成员变量是用来表示属性的 )

  5. 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)。比如我们前面定义猫类的int age是属性

    <2>注意事项和细节

  • 属性的定义语法同变量,示例:访问修饰符属性类型属性名;
    • 有四种访问修饰符 public , proctected , 默认 , private
  • 属性的定义类型可以为任意类型,包含基本类型或引用类型
  • 属性如果不赋值,有默认值,规则和数组一致。具体说: int 0, short 0, byte 0, long 0, float 0.0,double 0.0, char lu0000,boolean false,String null

    2:如何创建对象

    <1>先声明再创建

    1. Cat cat; //声明对象cat
    2. cat = new Cat(); //创建

    <2>直接创建

    1. Cat cat = new Cat();

    2:如何访问属性

    1. // 对象.属性名;
    2. cat.name;
    3. cat.age;
    4. cat.color;

    五:类和对象的内存分配机制

1:java内存的结构分析

  • 栈:一般存放基本数据类型(局部变量)
  • 堆:存放对象(Cat cat ,数组等)
  • 方法区:常量池(常量,比如字符串),类加载信息

    2:Java创建对象的流程简单分析

    1. Person p = new Person();
    2. p.name = jack”;
    3. p.age = 1
  1. 先加载Person类信息(属性和方法信息,只会加载一次)
  2. 在堆中分配空间,进行默认初始化(看规则)
  3. 把地址赋给 p , p 就指向对象
  4. 讲行指定初始化,比如 p.name = “jackp” p.age = 10

    3:一段代码的内存布局图

    image.png
    image.png