Java面向对象

  • 面向过程和面向对象的区别
    1、面向过程:主要关注点是实现的具体过程,因果关系。
    优点:对于业务逻辑比较简单的程序,可达到快速开发,前期投入成本较低。
    缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的方式导致软件元素之间的“耦合度”非常高,只要其中一环出了问题,整个系统受到影响,导致最终的软件“扩展力”差。另外,由于没有独立的概念,所以无法达到组件复用。
    2、面向对象:主要关注点是对象【独立体】能完成哪些功能。
    优点:耦合度低,扩展力强。更容易解决现实世界中更复杂的业务逻辑。组件复用性强。
    缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计。
  • 面向对象的三大特征
    封装
    继承
    多态
    (所有面向对象的编程语言都有这三大特征)
    从软件的开发生命周期来看,基于面向对象可以分为三个阶段:
    OOA(面向对象的分析)
    OOD(面向对象的设计)
    OOP(面向对象的编程)
  • 类和对象的概念
    对象:对象是实际存在的个体,对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
    类:在现实世界中是不存在的,类是一个模板,它描述一类对象的行为(方法)和状态(属性)。类代表了一类事物。
  • 类的定义
    1、语法结构:
    [修饰符列表] class 类名{
    属性;
    方法;
    }
    2、学生类:描述所有学生对象的共同特征
    学生对象有哪些状态信息:
    学号【int】
    姓名【String】
    性别【Boolean】
    ...
    学生对象有哪些动作信息:
    吃饭
    睡觉
    学习

    ...
    注:属性通常是采用一个变量的形式来完成定义的。
    int age;
    String name;
    boolean sex;
    ...
  • Java语言中包括两种数据类型:
    1、基本数据类型
    byte
    short
    int
    long
    ...
    2、引用数据类型
    举例:int age = 10;
    String username = "zhangsan";
    Student s = ???;

String.class SUN提供的
System.class SUN提供的
User.class 程序员自定义的
Student.class 程序员自定义的
Product.class 程序员自定义的
...
Java语言中所有的class都属于引用数据类型。

  • 对象的创建和使用
    int i = 10;
    Student s = new Student();
    1、int是基本数据类型,i是变量名,10是一个int类型的字面值
    2、通过一个类可以实例化N个对象,实例化对象的语法:new 类名();
    3、new是Java语言中的一个运算符,new运算符的作用是创建对象,在JVM堆内存中开辟新的内存空间。
    4、方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中。
    栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈。
    堆内存:new的对象在堆内存中开辟的内存空间称为对象。
    5、Student是一个引用数据类型,s是一个变量名,new Student()是一个学生对象,s是一个局部变量【在栈内存中储存】。
    6、什么是对象?new运算符在堆内存中开辟的内存空间称为对象。
    什么是引用?引用是一个变量,只不过这个变量(s)中保存了另一个Java对象的内存地址。
    7、Java语言中,程序员不能直接操作堆内存,因为Java没有指针;只能通过“引用”去访问堆内存当中对象内部的实例变量。
    8、访问实例变量的语法格式:
    读取数据:引用.变量名(例:int stuAge=s.age)
    修改数据:引用.变量名 = 值(例:s.age = 10)
  • JVM主要有三块内存空间:栈内存、堆内存、方法区内存
    1、栈内存中储存局部变量;
    堆内存中储存实例变量;
    方法区内存中储存代码片段和静态变量。
    2、变量分类:
    局部变量【方法体中声明】
    成员变量【方法体外声明】
    :实例变量(前面的修饰符没有static)和静态变量(前面的修饰符有static)
  • 垃圾回收器【垃圾回收机制、GC机制】
    1、什么时候会考虑将某个Java对象的内存回收呢?
    当堆内存当中的Java对象成为垃圾数据的时候,会被垃圾回收器回收。
    2、什么时候堆内存中的Java对象会变成垃圾呢?
    没有更多的引用指向它时。(这个对象无法访问,因为访问对象只能通过引用的方式访问)
    3、所以空引用访问“实例”相关的数据一定会出现空指针异常。(错误会显示“java.lang.NullPointerException”)
    “实例”相关的数据表示:这个数据访问的时候必须有对象的参与,这就是实例相关的数据。
原文地址:https://www.cnblogs.com/yu011/p/12632563.html