有一定基础的JAVA学习笔记_02(面向对象)

目录

1、面向过程和面向对象

2、对象和类的概念

3、面向过程的内存分析

4、构造方法

5、垃圾回收机制


1、面向过程和面向对象

  • 面向过程:按步骤解决问题(开车)
  • 面向对象:根据组成部分设计事物(造车)
  • 面向对象具有三大特征:封装性、继承性和多态性
  • 面向过程和面向对象都是解决问题的思维方式,都是代码组织的方式
  • 解决简单问题一般使用面向过程的方式
  • 解决复杂问题时宏观上需要使用面向对象的方式,但微观处理上仍然是面向过程

2、对象和类的概念

  • 类:class
  • 对象:Object,instance(实例)
  • 类是模版,可以根据类的定义来造出对象,一般称对象是类的实例
  • 类有三种常见成员:属性field、方法method、构造器constructor,都可以定义零个或多个

3、面向过程的内存分析

  • 栈的存储特性是“先进后出,后进先出”
  • 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧
  • 栈是由系统自动分配栈的一个连续的内存空间
  • JVM为每个线程创建一个私有栈,用于存放该线程执行方法的信息,线程间不能共享

  • 堆本质是一个二叉树,是不连续的内存空间,分配灵活但速度慢
  • 堆用于存储创建好的对象和数组(数组也是对象)
  • JVM只有一个堆,被所有线程共享

方法区(静态区)

  • 方法区实际也是堆(但和上文不是一个东西),JVM只有一个方法区,被所有线程共享
  • 方法去用来存放程序中永远不变或唯一的内容,如类信息、静态变量、字符串常量等

4、构造方法

  • 构造方法也叫构造器,是一个创建对象时会自动调用的特殊方法,目的是对象的初始化
  • 构造器的名称应与类的名称一致
  • Java通过new关键字来调用构造器,从而返回该类的实例
  • 构造器虽然有返回值,但是不能定义返回值类型,也不能使用return
  • 如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数
  • 构造方法也可以重载,用于创建参数不同的对象
class Point {
    double x, y;

    //构造器
    public Point(double _x, double _y) {
        x = _x;
        y = _y;  
    }

    //定义的方法
    public double getDistance(Point p) {
        return Math.sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
    }
}

public class TestConstructor {
    public static void main(String[] args) {
        Point p = new Point(3.0, 4.0);
        Point origin = new Point(0.0, 0.0);//生成对象
        System.out.println(p.getDistance(origin));
    }
}

5、垃圾回收机制

上一篇:「考试总结」2022-02-06


下一篇:2022-02-07(301. 删除无效的括号)