java学习笔记005


c 纯面向过程;c++半面向对象;java纯面向对象


  • 面向过程
    • 关注流程是怎么走的,关注因果关系
      • 优点:
        • 业务逻辑比较简单的程序,可以达到快速开发,前期投入成本低
      • 缺点:
        • 软件元素之间的耦合度非常高,只要其中的一环出问题,整个系统受到影响。导致最终的软件扩展力差。
        • 没有独立体的概念,所以无法达到组件复用
  • 面向对象
    • 关注对象能完成哪些功能

      • 优点:耦合度低,扩展力强。更容易解决现实世界中更复杂的业务逻辑。组件复用性强
      • 缺点:前期投入成本高,需要系统的分析设计
    • 面向对象三大特征

      • 封装
      • 继承
      • 多态
    • 采用面向对象的方式开发一款软件,生命周期当中:

      • 面向对象的分析:OOA
      • 面向对象的设计:OOD
      • 面向对象的编程:OOP
    • 类和对象的概念

      • 什么是类?
        • 类在现实世界当中是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果
        • 类代表了一类事物
        • 在现实世界当中,对象a和对象b之间具有共同特征,进行抽样总结出一个模板,这个模板被称为类
      • 什么是对象?
        • 对象是实际存在的个体,现实世界当中实际存在
      • 过程
        • 通过类可以创建对象
        • 让对象直接协作起来形成一个系统
      • 类—实例化—》对象
        • 对象被称为实例/instance
      • 对象—抽象—》类
        • 类描述的是对象的共同特征
        • 一个类主要描述的是 状态+动作
          • 状态----类的属性
          • 动作----类的方法
      • 类的定义
      /**
      *  [修饰符列表] class  类名{
      *   属性
      *  方法
      *  }
      */
      
        - 属性往往是通过变量的方式来定义
        - 在类体当中,方体体外定义的变量被称为’成员变量‘
        - 成员变量没有赋值,系统赋默认值:一切向0看齐
      
      • java语言中包括两种数据类型
        • 基本数据类型
          • byte
          • short
          • int
          • long
          • float
          • double
          • boolean
          • char
        • 引用数据类型
          • xxx.class
      • 对象的创建和使用
        • 类体=属性+方法
        • 属性:存储数据采用变量的形式
        • 由于变量定义在类体当中,方法体之外,这种变量称为成员变量
        • 通过一个类可以实例化N个对象
          实例化对象的语法:new 类名();
          new 是java语言当中的一个运算符
          new运算符的作用是创建对象,在JVM堆内存当中开辟新的内存空间
          方法区内存:在类加载的时候,class字节码代码片段被加载到该内存空间当中;
          栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈;
          堆内存:new的对象在堆内存中存储.
          
        • 什么是对象?new运算符在堆内存中开辟的内存空间称为对象
        • 什么是引用?引用是一个变量,只不过这个变量中保存了另一个java对象的内存地址
        • java 语言当中,程序员不能直接操作堆内存,java中没有指针,不像c语言。
        • java语言当中,只能通过引用去访问堆内存当中的对象内部的实例变量
        • 访问实例变量的语法格式
          • 读取数据:引用.变量名
          • 修改数据:引用.变量名=值;
        • 局部变量在栈内存中存储;成员变量中的实例变量在堆内存的java对象内部存储
        • 实例变量是一个对象一份,100个对象有100份
        • 不能通过类名访问对象
        • 引用是个变量,可以是局部变量或是成员变量
      • 内存分析
        • JVM(JAVA虚拟机)主要包括三块内存空间,分别是:栈内存、堆内存、方法区内存
        • 堆内存和方法区内存各有一个。一个线程一个栈内存
        • 方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈
        • 栈中主要存储的是方法体中的局部变量
        • 方法的代码片段以及整个类的代码片段都被存储在方法区内存中,在类加载的时候,这些代码片段会载入
        • 在程序执行过程中使用new运算符创建的java对象,存储在堆内存当中。对象内部有实例变量,所以实例变量存储在堆内存当中
        • 变量分类
          • 局部变量[方法体中声明]
          • 成员变量[方法体外声明]
            • 实例变量【前面修饰符没有static
            • 静态变量【前面修饰符有static
          • 栈内存中存储局部变量,堆内存中存储实例变量,方法区内存存储代码片段和静态变量
        • 静态变量存储在方法区内存中
        • 三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对堆内存
        • 垃圾回收器什么时候会考虑将某个java对象的内存回收呢?
          • 当堆内存当中的java对象成为垃圾数据的时候,会被垃圾回收器回收
          • 什么时候堆内存中的java对象会变成垃圾呢?
            • 没有更多的引用指向它的时候
            • 这个对象无法被访问,因为访问对象只能通过引用的方式访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__BC__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值