Java基础学习笔记

Java基础学习笔记

成员变量和局部变量的区别

  • 内存中的位置

    ​ 成员变量:堆内存

    ​ 局部变量:栈内存

  • 生命周期

    ​ 成员变量:随着对象的创建而存在,随着对象的消失而消失

    ​ 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

  • 注意事项

    ​ 局部变量和成员变量重名时,采用就近原则

  • Java中使用变量的规则

    ​ 遵循“就近原则”,局部位置有就使用

    ​ 局部变量→成员变量→父类→更高的类→Object

Java中的封装体

  • 方法

    ​ 安全性:调用者不知道方法的具体实现

    ​ 复用性:方法可以被重复使用

    ​ 简单化:将繁多的代码以一个方法的方式呈现,仅通过调用方法就可以实现功能;代码维护也变得简单

  • ​ 安全性:调用者不知道类的具体实现

    ​ 复用性:类的对象可以被重复使用

    ​ 简单化:类的对象包含了更多的功能,使用起来也方便

Java中的继承

  • Java中继承的特点
    • 单继承

    ​ Java只支持类的单继承,但是支持多层(重)继承

    ​ Java支持接口的多继承,语法为:

    ​ 接口A extends 接口B,接口C,接口D…

    • 私有成员不能继承

      ​ 只能继承父类的飞私有成员(成员变量,成员方法)

    • 构造方法不能继承

      ​ 构造方法用于初始化本类对象

      ​ 创建子类对象时,需要调用父类构造初始化该对象的父类内容,

      ​ 若父类构造可以被继承,该操作会造成调用的混乱。

    • 继承体现了“is a ”的关系

      ​ 子类符合“is a(是一个)”父类的情况下,才使用继承,其它情况下不建议使用

  • 继承关系中子父类构造方法的使用

    ​ 创建子类对象时,优先调用父类构造方法

    ​ 子类构造方法的第一行,隐含语句super(),用于调用父的类默认无参构造

    ​ 如果父类没有无参构造,可以通过super(参数)的形式访问父类的代参构造

方法重写

  • 定义

    ​ 子类中出现和父类方法定义相同的方法的现象

  • 解释

    ​ 方法重写也叫方法的复写、覆盖方法名、参数列表、返回值类型都相同

  • 注意事项

    ​ 父类私有方法无法重写

    ​ 子类方法访问权限不能小于父类方法

    ​ 子类不能比父类方法抛出更大的异常

  • 使用场景

    ​ 扩展父类功能

    ​ 父类功能过时,重新实现父类功能

  • 方法重写和方法重载的局别

在这里插入图片描述

四大权限修饰符

本类同包下的类不同包下的子类不同包下的无关类
privateY
默认YY
protectedYYY
publicYYYY
  • private:强调的是给自己使用

  • 默认:强调的是给同包下的类来使用

  • protected:强调的是给子类使用

  • public:强调的是给大家使用

多态(父类引用指向子类对象)

  • 多态关系中,使用成员变量

    ​ 编译看左(编译期间会看左边的类型有没有这个成员,没有就报错)

    ​ 运行看左(运行期间使用的是左边类型中的这个成员)

  • 多态中调用成员方法

    ​ 编译看左(左边的类型有没有这个成员)

    ​ 运行看右(运行时具体用的是右边类的该成员)

  • 多态的使用场景

    ​ 父类型可以做为形参的数据类型,这样可以接受其任意的子类对象

  • 多态的弊端

    ​ 父类引用不能使用子类特有的成员

    ​ (可以使用引用类型的类型转换)

    ​ 将父类对象转换成子类对象,使用instanceof进行检查

抽象类的特点

  • 抽象类和抽象方法必须使用abstract关键字修饰

  • 抽象方法不能实例化(抽象类不能new)

    那抽象类怎么实例化呢?

    答:通过创建其子类对象来完成初始化操作

  • 抽象类的子类

    如果是普通类,则必须重写所有的抽象方法

    如果是抽象类,则不用重写抽象方法

  • 抽象类的成员特点

    可以有普通的成员变量,也可以有成员变量

    可以有抽象方法,也可以有非抽象方法

    有构造方法,并且构造方法还可以重载

接口的特点

  • 接口创建对象的特点

    • 接口不能实例化,需要创建其子类对象来完成实例化操作

    • 接口的子类

      ​ 如果是普通类,则必须重写接口中的所有抽象方法

      ​ 如果是抽象类,则不用重写接口中的抽象方法

  • 接口和类之间的关系

    • 类与类之间

      ​ 继承关系:只能单继承,不能多继承,但是可以多层继承

    • 类与接口之间

      ​ 实现关系,可以单实现,也可以多实现

    • 接口与接口之间

      ​ 继承关系,可以单继承,可以多继承

      对于一个类来讲,它的父类(继承的关系)中定义的都是:共性内容

      对于一个类来讲,它的父接口(实现的关系)中定义的都是:扩展内容

  • 接口中的成员特点

    • 成员变量

      ​ 接口中只有成员常量,没有成员变量

      ​ 原因是因为接口中所有的变量都有默认修饰符:public static final

    • 成员方法

      ​ JDK7及其以前,只能定义抽象方法

      ​ 原因是所有方法都有默认修饰符:public abstract

      ​ JDK8以后,可以有带方法体的方法了

      ​ 静态方法直接写,非静态方法要用default修饰

      ​ JDK9以后,可以有私有方法了,直接写即可

    • 构造方法

      ​ 接口中没有构造方法

Object类

在这里插入图片描述

构造方法

  • Object():

    ​ 构造一个对象。所有子类对象初始化时都会优先调用该方法

成员方法

  • int hashCode():

    ​ 返回对象的哈希码值,该方法通过对象的地址值进行计算,不同对象的返回值一般不同

  • Class<?>getClass():

    ​ 返回调用此方法对象的运动时类对象(调用者的字节码文件对象)

  • String toString():

    ​ 返回该对象的字符串表示

  • boolean equals():

    ​ 返回其他某个对象是否与此对象“相等”(地址值)。默认情况下比较两个对象的引用,建议重写

Scanner

在这里插入图片描述

String

在这里插入图片描述

  • 成员方法

在这里插入图片描述
在这里插入图片描述

StringBuilder 和 StringBuffer类

在这里插入图片描述

Date 和 Calendar类

在这里插入图片描述

集合

Java的集合体系

在这里插入图片描述

  • 单例集合(Collection)

    • List(有序集合,允许相同元素和null)

    • ├ArrayList(非同步,允许相同元素和null,实现了动态大小的数组,遍历效率高,用的多)

      ​ 特点:有序(元素的存取顺序一致),可重复

      ​ 注意:List是接口,所以可以通过创建其子类ArryList对象来完成该接口的实例化

      List list = new ArryList();
      
    • ├LinkedList (非同步,允许相同元素和null,遍历效率低插入和删除效率高)

    • ├Vector(同步,允许相同元素和null,效率低)
      └ Stack(继承自Vector,实现一个后进先出的堆栈)

    • Set(无序集合,不允许相同元素,最多有一个null元素)

      ​ 特点:无序,不可重复

    • └ HashSet(无序集合,不允许相同元素,最多有一个null元素)

  • 双例集合(Map:key,value)

    • Map(没有实现collection接口,key不能重复,value可以重复,一个key映射一个value):
    • ├Hashtable (实现Map接口,同步,不允许null作为key和value,用自定义的类当作key的话要复写hashCode和eques方法)
    • ├HashMap (实现Map接口,非同步,允许null作为key和value,用的多)
    • └ WeakHashMap(实现Map接口)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值