JAVA面向对象 Part01 零碎知识点总结

 
    1. 面向对象基本概念,万物皆对象
      1. 定义:编程思想,思维方式
        1. 两种思维方式的区别:
          1. 面向过程
            1. 根据具体的操作步骤去实现程序
            2. 缺点:
              1. 不通用,耦合度高
              2. 不利于维护,不能适应变化
          2. 面向对象
            1. 解决程序适应变化的能力(可维护性强),降低功能之间的相互依赖,解耦!
      2. 如何建立面向对象思维方式:
        1. 先整体,在局部
        2. 在抽象,再具体
          1. 粒度
          2. 如何抽象:
            1. 考虑事物的共同点(共性)
        3. 能做什么,在怎么做
      3. 设计原则,设计模式

     

    1. 类与对象
      1. :通过类别/分类可以区分不同的事物种类
        1. 是一组具有相同特性(属性)与行为(方法)的事物集合.
      2. 对象:一切具体的事物
      3. 关系:
        1. 对象是一个个产物,是一个个体的特征
        2. 类表示一个共性的产物,是一个综合的特征
        3. 类由属性和方法租车
          1. 属性:特征
          2. 方法:行为

     

    1. 定义格式
      1. class类名称 {属性;返回值方法名(参数…){} }
      2. 一个类想要真正的进行操作,则必须依靠对象
        1. 类名称类对象名称 = new类名称()
      3. 访问类的属性:对象.属性
      4. 访问类的方法:对象.方法
      5. 声明对象:类名称对象名称 = null,没有内存指向,无法调用属性方法
      6. 实例化对象:类名称对象名称 = new类名称()表示分配内存,实例化对象
      1. 两种方式调用:
        1. 匿名对象调用
        2. 实例化对象(引用变量)调用属性方法
      2. 可以有多个引用类型变量共同指向一个对象
    2. 对象内存分析
      1. 栈内存,引用变量存储对象堆内存的地址
        1. 地址, 32位内存占4字节, 64位占8字节
      2. 堆内存
      3. new:申请内存空间,表示实例化对象,创建
      4. 要尽早将对象置为null
      5. 没有引用指向的对象会被gc,可以调用System.gc();提醒系统尽快执行垃圾回收
    3. 封装性
      1. 面向对象三大特征之一
      2. 隐藏细节,仅对外部提供访问接口
      3. 好处:
        1. 模块化
        2. 重用
        3. 插件化,易于调试维护
        4. 安全,信息隐藏
    4. 构造方法
      1. 构造方法
        1. 类创建对象时自动调用的方法,用来初始化属性,也可以使用setter方法初始化
        2. 是实例化时第一个调用的方法
        3. 特点:
          1. 与类名相同
          2. 没有返回值
        4. 若没有写构造方法,编译器则会添加默认无参构造方法
      2. 构造方法的重载
        1. 可以自定义多个构造方法,但参数不同
        2. 互相可以使用this(…)调用
      3. super(), this()必须在首行
        1. call to super()/this() must be first statement in constructor body,只能位于构造器的首行
      4. 不能互相调用this(…)
        1. recursive constructor convocation,递归调用构造器
      5. 构造方法私有化
        1. 保证该类只有一个对象

     

    1. 方法的重载
      1. 方法名相同,参数不同(方法签名:方法名,参数列表(参数类型,顺序,数量))
        1. 返回值,修饰符不能作为判断依据
    2. String
      1. 实例化的两种方式
        1. String s = new String();
          1. 常量池
          2. 堆区
        2. String s = "";
          1. 常量池创建,若有则直接使用
      2. 区别:
        1. 直接赋值:检查字符串中的常量池(堆内存)是否存在该对象,如果存在,则指向该对象,若果不存在,则再常量池中创建并指向该对象(0/1个对象)
        2. new:在堆中创建一个对象,然后检查字符串常量池,如果不存在,则会在常量池中创建该对象.
      3. 这种机制有助于节省内存,提高效率
      4. char数组存储

     

    1. Extends
      1. 运行时常量池(Runtime Constant Pool)是方法区(Method Area)的一部分,是各线程共享的内存区域。
      2. 在方法区中,还有运行时数据区有Java堆、方法区、Java虚拟机栈、本地方法栈、程序计数器
      3. Java虚拟机方面的知识,可以看一下下面的链接。http://www.cnblogs.com/Cratical/archive/2012/08/21/2649985.html
    2. Notice
      1. 面向对象特征是什么:
        1. 封装,继承,多态(,抽象)
      2. 字符串相加是在堆区创建对象还是在常量池中创建对象
        1. 如果编译器可以确定,则为常量池中创建
          1. String s = "a" + 1;
          2. final String s =  "a"; String b = s + "a";
        2. 否则在堆区创建
          1. String s = "a"; String b = a + "a";
          2. String a = getString() + "a";
        3. 字符串与变量相加,会产生大量垃圾对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值