Java 总结二

一、抽象类和接口

  1. 抽象类使用abstract修饰,不能实例化。
  2. 抽象类中可以有零到多个抽象方法。抽象方法使用abstract关键字修饰,没有方法体。
  3. 如果非抽象类继承抽象类,则必须实现父类的所有的抽象方法,否则子类还是一个抽象类。
  4. 用final关键字修饰的类,不能再被继承。用final修饰的方法,不能被子类重写。用final关键字修饰的变量将变成常量,只能在初始化时进行赋值,不能在其他地方修改。
  5. 接口中的属性都是全局静态变量。自JDK1.8起,在接口中可以定义的方法包括抽象方法、静态方法和默认方法。
  6. 类只能继承一个父类,但是可以实现多个接口。Java通过实现接口可以达到多重继承的效果。
  7. 接口表示一种约定,也表示一种能力。接口体现了约定和实现相分离的原则。通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和可维护性。

二、异常

  1. 异常时有Java应用程序抛出和处理的非严重错误,它可以分为运行时异常和Checked异常两大类。
  2. Checked异常必须捕获或声明抛出,否则无法通过编译。运行时异常不要求必须捕获或声明抛出。
  3. Java异常处理是通过五个关键字实现的:try、catch、finally、throw和throws。其功能如下。
    1、try:用于监听。将可能抛出异常的代码放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
    2、catch:用于捕获异常。catch语句用来捕获try语句块中发生的异常。
    3、finally:finally语句块总是会被执行。它主要用于回收在try语句块里打开的资源(如数据库连接、网络连接和磁盘文件)。
    4、throw:用于抛出异常。
    5、throws:用于声明方法中可能抛出的异常。在该方法中可以不强制进行异常处理,如果出现了异常,则交给调用者进行处理。
  4. 即是在try块、catch块中存在return语句,finally块中的语句也会被执行。finally块中的语句不被执行的唯一情况是在异常处理代码中执行System.exit(1)方法。
  5. 可以在一个try块后跟随多个catch块,分别处理不同的异常,但排列顺序必须是从特殊到一般,最后一个一般为Exception类。
  6. Log4j 2 是一个优秀的日志记录工具,常用的使用方式是配置log4j2.xml文件,用来设置日志的输出级别、目的地和输出格式。

三、集合框架

  1. 集合弥补了数组的缺陷,它比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合可用于不同场合。
  2. Java的集合类主要由两个接口派生而出:Collection接口和Map接口及相关的工具类,这两个接口又包括了一些子接口或实现类。其中,Collection接口又包含了两个子接口——List接口和Set接口,另外一个重要接口是Map接口。
    1、Collection接口存储一组不唯一、无序的对象。
    2、Set接口继承Collection接口,存储一组唯一、无序的对象。
    3、List接口继承Collection接口,存储一组不唯一、有序的对象。
    4、Map接口存储一组成对的键-值对象,提供从key到value的映射。key不要求有序,不允许重复;value同样不要求有序,但允许重复。
  3. Iterator为集合而生,专门实现集合的遍历。它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。
  4. ArrayList类和数字采用相同的存储方式,它的优点在于遍历元素和随机访问元素的效率比较高。
  5. LinkedList类采用链表存储方式,优点在于插入、删除元素时效率比较高。
  6. HashMap类是最常见的Map实现类,它的存储方式是哈希表,优点是查询指定元素效率高。
  7. 使用泛型集合在创建集合对象时指定集合中元素的类型,在从集合中取出元素时无需进行强制类型转换,避免了ClassCastException异常。

四、实用类

  1. 枚举可以使代码更易于维护,有助于确保为变量指定合法的、期望的值。
  2. 枚举易于编程时输入,使用枚举赋值,只需输入枚举名和 “ . ”,就可显示所有枚举值。
  3. 枚举使代码更加清晰,允许用描述性的名称表示数据,使用时直观方便。
  4. 包装类是指将基本数据类型封装到一个类中,也就是将基本类型包装成一个类类型。Java程序设计语言为每一种基本类型都提供了一个包装类,而这些包装类就在java.lang包中,共有八个包装类,包含Boolean、Character、Byte、Short、Integer、Long、Float、Double。
  5. Java基本数据类型变量和包装类对象之间的转换较烦琐,从JDK1.5之后提供了自动装箱和自动拆箱功能。
    1、自动封箱:把基本数据类型变量直接转换为对应的包装类对象,或者转换为Object对象。
    2、自动拆箱:与自动装箱相反,将包装类对象转换为对应的基本类型变量。
  6. 在JDK1.8中,日期和时间的类都位于Java.time包中。
    1、LocalDate类、LocalTime类、LocalDateTime类的实例是不可变的对象,它提供了简单的日期或时间。
    2、使用DateTimeFormatter类进行日期格式化处理,该类位于java.time.format包中。日期类中的format()方法用于将日期格式化为字符串,该方法接收一个DateTimeFormatter对象。
  7. Random类用于生成随机数。它位于java.util包中,每当需要以任意或非系统方式生成数字时,就使用此类。

五、多线程

  1. 多线程允许程序员编写出可最大程度利用CPU的高效程序。
    • 在Java程序启动时,一个线程立刻运行,该线程通常被称为程序的主线程。主线程是产生其他子线程的线程。
    • 通常,主线程必须最后完成运行,因为它执行各种关闭动作。
  2. 可通过两种方式创建线程。
    • 声明一个继承了Thread类的子类,在此子类中,重写Thread类的run()方法。
    • 声明一个实现Runnable接口的类,然后实现run()方法。
  3. 每一个线程均会处于新建、就绪、运行、阻塞、死亡五种状态之一。
  4. 在Java实现的多线程应用程序中,可以通过调用Thread类中的方法实现对线程类对象的操作。
    • 调用线程的优先级:在同等情况下,优先级高的线程会获得较多的运行机会,优先级低的线程则相反。Java线程优先级用1~10的整数表示。
    • 线程休眠:sleep(long millis)方法使线程转到阻塞状态。
    • 线程的强制运行:join()方法可以让某一线程强制运行。
    • 线程礼让:yield()方法,暂停当前正在执行的线程类对象,把执行机会让给相同或更高优先级的线程。
  5. 当多个线程类对象操作同一共享资源时,要使用synchronized关键字进行资源的同步处理,可以使用同步代码块或同步方法实现线程同步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774891.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫之爬取网页图片

当我们想要下载网页的图片时,发现网页的图片太多了,无从下手,那我们写一个脚本来爬取呗。 这次的脚本是专门针对某个外国网站使用的,因此仅供参考思路。 在测试的过程中,我发现网站使用了发爬虫机制,具体就…

FPGA工程师及其相关岗位招聘~

社区的招聘功能上线之后,许多企业都在上面发布了招聘岗位。 目前有30企业,岗位围绕FPGA工程师,涵盖嵌入式软件工程师、射频工程师、C语言开发、BMC工程师等等,入口放在这里:F学社-全球FPGA技术提升平台 登录账号后&a…

<QT基础(1)>对象树结构

在Qt中,当你将一个对象设置为另一个对象的子对象时,Qt会自动管理它们的生命周期,包括子对象在堆上分配的内存空间。这意味着,如果你使用 new 在堆上创建了一个子对象,并将其设置为另一个对象的子对象,当父对…

海思 Hi3536AV100 简介

海思 Hi3536AV100 简介 Hi3536AV100 是针对多路高清/超高清(1080p/4M/5M/4K)智能NVR产品应用开发的新一代专业高端SoC芯片。集成了ARM Cortex-A55八核处理器和性能强大的神经网络处理器,支持多种智能算法应用。支持32路1080p多协议解码及4路…

OpenFoam最全总结

一、OpenFOAM用户指南-9(中文版):这个里面用中文写了OpenFOam相关的基础知识和文件结构和基础语法,包括安装、使用、案例、paraview可视化等,是最全的的一个文档。 http://www.dyfluid.com/theory.pdf 二、无痛苦N-S方程笔记(东岳…

深入浅出(五)QtPropertyBrowser库—属性编辑器

文章目录 1. QtPropertyBrowser简介1.1 下载 2. 编译和部署:3. C示例 1. QtPropertyBrowser简介 QtPropertyBrowser是一个第三方库,用于在Qt应用程序中显示和编辑属性。它不是Qt框架的一部分,但可以与Qt一起使用。 1.1 下载 GitHub地址&am…

URL是什么?(概念+应用场景+优缺点)

1、概念 URL(Uniform Resource Locator)是统一资源定位符的缩写,简称网址。 用于指定网络上的资源的位置和访问方式。 它包含了资源的协议、主机名、路径等信息,可以唯一标识互联网上的资源。 2、作用: ① 定位资…

HCIP-Datacom(H12-821)题库补充(3/27)

最新 HCIP-Datacom(H12-821)完整题库请扫描上方二维码访问,持续更新中。 运行OSPF协议的路由器,所有接口必须属于同一个区域。 A:正确 B:错误 答案:B 解析:OSPF的邻居关系是基于…

Python环境下滚动轴承状态监测与故障诊断(NASA IMS轴承数据集)

智能维护系统IMS)滚动轴承数据是美国辛辛那提大学智能维护系统中心提供的全寿命周期数据,轴上安装了4个轴承。通过摩擦带将转速保持恒定在 2000r/min。包含3个数据集,每个数据集描述了一个测试到失败的实验。其中第一个实验装置的数据采集从 2003 年 10月…

鸿蒙OS开发实例:【工具类封装-emitter组件间通信】

import Emitter from ohos.events.emitter; import pasteboard from ohos.pasteboard; MyEmitterUtil 是一个针对 HarmonyOS 的事件驱动编程封装类,主要用于组件间的通信和数据传递。 使用要求: DevEco Studio 3.1.1 Release 或更高版本API 版本&…

get 请求中传递数组参数

文章目录 问题分析 问题 使用get请求传参时有参数是数组 分析 qs.stringify({ a: [b, c] }, { arrayFormat: indices }) // 输出结果:a[0]b&a[1]c qs.stringify({ a: [b, c] }, { arrayFormat: brackets }) // 输出结果:a[]b&a[]c qs.stringif…

Qt C++ | QTimer经验总结

QTimer Class QTimer类提供重复计时器和单次计时器 头文件: #include <QTimer> qmake: QT += core 继承自: QObject 定时器信号 void timeout() 公共函数 Qt::TimerType 枚举定义了 Qt 中不同类型的定时器。它包含以下值: **Qt::PreciseTimer:**高精度定时器,用…

国内ip地址推荐,畅享网络新体验!

在数字化时代&#xff0c;IP地址不仅是网络连接的基石&#xff0c;也是互联网产业发展的重要标志。国内作为全球互联网市场的重要参与者&#xff0c;拥有众多IP地址资源。虎观代理小二旨在探索并推荐一些国内IP地址&#xff0c;分析它们的价值所在&#xff0c;并探讨如何更好地…

hcia datacom课程学习(4):ICMP与ping命令

1.什么是ICMP ICMP是ip协议的一部分&#xff0c;常用的ping命令就是基于icmp协议的。 在防火墙策略中也能看到ICMP&#xff0c;如果将其禁用&#xff0c;那么其他主机就ping不通该主机了 2. ICMP数据报 2.1数据报构成 ICMP协议的报文包含在IP数据报的数据部分&#xff0c; …

[windows]Windows上缩放窗体的两种方式

第一种 直接上图 第二种 第二种方式时&#xff0c;快速拖动时&#xff0c;如果是chrome浏览器套壳软件就会出现拖动部分出现黑边的现象而原生的桌面应用程序则不会出现黑边。这现象在chrome浏览器本身就存在。如图 typora是用electron写的软件存在该问题

FastAPI+React全栈开发07 MongoDB数据库的结构

Chapter02 Setting Up the Document Store with MongoDB 02 The structure of a MongoDB database FastAPIReact全栈开发07 MongoDB数据库的结构 MongoDB is arguably the most used NoSQL database today, its power, ease of use, and versatility make it an excellent c…

区块链与智能合约

什么是区块链 要想理解什么区块链&#xff0c;我们先来从本质上认识一下它 区块链&#xff1a;本质上是一个去中心化的分布式账本数据库&#xff0c;是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方法。 没有基础的人可能理解起来有点困难&#xff0c;我们来…

相位解包裹前识别有效区域和无效区域(条纹和背景区域区分)

对于不连续场进行相位解包的时候,首先要识别出图象中的哪些部分为有效数据,哪些部分为非有效数据"。这不仅关乎着相位解包算法的速度,更影响着解包算法的精度。因此在解包之前,对有效区域和无效区域的判断必须是首先要做的一件事情。下面就来介绍一下什么是有效区域和…

leetcode169-Majority Element

这道题目要求数组中最多的那个元素&#xff0c;这道题目的解法比较直观&#xff0c;直接遍历元素也可以有一个很好的时间复杂度。注意这里的遍历要求技巧&#xff0c;我们可以建立一个哨兵元素&#xff0c;并且记录哨兵元素出现的次数&#xff0c;如果遍历到的元素和哨兵元素一…

全国地质灾害点shp崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的&#xff0c;对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律&#xff0c;既受制于自然环境&#xff0c;又与人类活动有关&#xff0c;往往是人类与自然界相互作用的结果。…