学习Java的第八天

发布于:2023-02-03 ⋅ 阅读:(256) ⋅ 点赞:(0)

一、理解“万事万物皆对象”

1、在Java语言范畴中,我们都将功能、结构等分装到类中,通过类的实例化,来调用具体的功能结构

        >Scanner,String等

        >文件:file

        >网络资源:URL

2、涉及到Java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类和对象

二、面向对象的三大特征:

        1、封装

                封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象 的本质就是将现实世界描绘成一系列封闭的对象,我们在类中编写的方法就是对实现细节的一种封 装,我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只 向外界提供最简单的编程接口。

        2、继承

                继承是从已有类得到继承信息创建新类的过程。子类得到父类的一些信息,继承让系统有了 一定的延续性,是封装程序中可变因素的重要手段。

        3、多态

                多态性是指用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多 态性和运行时的多态性,方法重载实现的是编译时的多态性(前绑定),方法重写实现的是运行时 的多态性(后绑定)。要实现多态需要做两件事:方法重写(子类继承父类并重写父类中已有的或抽 象的方法)和对象造型(用父类型引用引用子类型对象)。

三、重载、重写

1. 方法重载的规则:

        方法名一致,参数列表中参数的顺序,类型,个数不同。 重载与方法的返回值无关,存在于父类和子类,同类中。 可以抛出不同的异常,可以有不同修饰符。

2. 方法重写的规则:

        参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致。         构造方法不能被重写,声明为 final 的方法不能被重写,声明为 static 的方法不能被重写,但 是能够被再次声明。

        访问权限不能比父类中被重写的方法的访问权限更低。 重写的方法能够抛出任何非强制异常(UncheckedException),无论被重写的方法是否抛出 异常。但是,重写的方法不能抛出新的强制性异常(编译时异常),或者比被重写方法声明的 更广泛的强制性异常,反之则可以。

3. 为什么函数不能根据返回类型来区分重载?

        因为调用时不能指定类型信息,编译器不知道你要调用哪个函数。

四、Java的异常接口

        Throwable是异常的顶层父类,代表所有的非正常情况。它有两个直接子类,分别是Error、Exception。

        Error是错误,一般是指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断。通常应用程序无法处理这些错误,因此应用程序不应该试图使用catch块来捕获Error对象。在定义方法时,也无须在其throws子句中声明该方法可能抛出Error及其任何子类。

        Exception是异常,它被分为两大类,分别是Checked异常和Runtime异常。所有的RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常。Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译。Runtime异常则更加灵活,Runtime异常无须显式声明抛出,如果程序需要捕获Runtime异常,也可以使用try...catch块来实现。

五、Java集合

        Java中的集合类分为4大类,分别由4个接口来代表,它们是Set、List、Queue、Map。其中,Set、List、Queue、都继承自Collection接口。

        1、Set代表无序的、元素不可重复的集合。

        2、List代表有序的、元素可以重复的集合。

        3、Queue代表先进先出(FIFO)的队列。

        4、Map代表具有映射关系(key-value)的集合。

六、List、Map、Set

        1. 结构特点:

                 List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合。

                List 中存储的数据是有顺序,并且允许重复。

                Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的。

                Set 中存储的数据是无序的,且不允许有重复,但元素在集合中的位置由元素的 hashcode 决 定,位置是固定的。

        2. 实现类:

                List 接口有三个实现类

                        LinkedList:基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还 存储下一个元素的地址。链表增删快,查找慢;

                        ArrayList:基于数组实现,非线程安全的,效率高,便于索引,但不便于插入删除;                        

                         Vector:基于数组实现,线程安全的,效率低。

                Map 接口有三个实现类

                        HashMap:基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null 键;

                        HashTable:线程安全,低效,不支持 null 值和 null 键;

                        LinkedHashMap:是 HashMap 的一个子类,保存了记录的插入顺序; SortMap 接口:

                        TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序。

                Set 接口有两个实现类

                        HashSet:底层是由 HashMap 实现,不允许集合中有重复的值,使用该方式时需要重 写 equals()和 hashCode()方法;

                        LinkedHashSet:继承与 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使 用的是LinkedHashMp。

        3. 区别:

                List 集合中对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索 对象,例如通过list.get(i)方法来获取集合中的元素;

                Map 中的每一个元素包含一个键和一个值,成对出现,键对象不可以重复,值对象可以重 复;

                Set 集合中的对象不按照特定的方式排序,并且没有重复对象,但它的实现类能对集合中的对 象按照特定的方式排序,例如 TreeSet 类,可以按照默认顺序,也可以通过实现 Java.util.Comparator接口来自定义排序方式。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到