Java部分复习笔记整理

一、Java常用类

1.String类

表示字符串,不可变,常用方法包括length()charAt()substring()indexOf()equals()等。

2.ArrayList类

基于数组实现的动态数组,可变大小,常用方法包括add()get()set()remove()size()等。

3.HashMap类

基于哈希表实现的键值对存储,常用方法包括put()get()containsKey()remove()keySet()等。

4.StringBuilder和StringBuffer类

用于可变字符串操作,相比String类可以进行高效的字符串拼接和修改操作。常用方法包括 append(), insert(), delete(), reverse() 等。

5.HashSet和TreeSet类

实现了Set接口,分别基于哈希表和红黑树实现。HashSet支持快速查找、插入和删除操作,而TreeSet支持有序的集合操作。

6.LinkedList类

双向链表实现的列表,实现了List接口,提供了快速的插入和删除操作,但访问速度相对较慢。常用方法有 add(), get(), remove(), size() 等。

7.Arrays类

提供了数组操作的各种静态方法,例如数组的排序、查找、填充等。常用方法包括 sort(), binarySearch(), fill() 等。

8.Math类

提供了数学计算相关的静态方法,如求绝对值、取最大最小值、对数运算等。常用方法有 abs(), max(), min(), log() 等。

9.Exception类及其子类

用于处理异常情况,Java中的异常处理机制依赖于这些类的继承结构,常见的子类有NullPointerException、IOException等。

11.Date类

用于日期和时间的处理,已经过时,推荐使用 java.time 包中的类如 LocalDate, LocalDateTime。

12.File类

文件和目录操作类,常用方法有 exists(), createNewFile(), mkdir(), listFiles() 等。

二、面向对象

面向对象编程(OOP)是一种编程范式,通过对象的概念,将数据与函数绑定在一起。主要特征包括:

1.抽象(Abstraction)

抽象是简化复杂系统的过程,它是隐藏具体实现细节,展示重要特征和功能的方法。在OOP中,通过抽象类和接口来定义规范,而不关心具体实现细节

2.接口(Interface)

接口定义了一个类或者多个类应该提供的方法和行为,但不包含具体实现。类可以实现一个或多个接口,从而达到实现多态的效果。

3.组合(Composition)

组合是一种设计模式,它允许一个对象包含其他对象作为其部分。通过组合,可以构建具有复杂功能的对象,同时保持高内聚性和低耦合性。

4.设计模式(Design Patterns)

设计模式是解决常见问题的可复用方案,它们提供了在面向对象设计中常见问题的解决方案,例如单例模式、工厂模式、观察者模式等。

5.封装变体:Getter和Setter

封装不仅限于将属性和方法绑定在一起,还包括通过公共方法(如Getter和Setter方法)来控制对对象属性的访问和修改,以实现数据的安全性和一致性。

6.重载(Overloading)和重写(Overriding)

重载是在同一个类中定义多个同名方法,但参数列表不同,用于实现同一方法的多种形式;重写是子类覆盖父类的方法,以改变或扩展其行为。

三、集合

List接口
ArrayList

基于动态数组实现,支持随机访问,适合读取操作频繁的场景。LinkedList:基于双向链表实现,插入和删除操作效率高,但随机访问较慢。

Set接口
HashSet

基于哈希表实现,元素无序存储,可以快速查找,但不保证顺序。

TreeSet

基于红黑树实现,元素有序存储(根据元素的自然顺序或者自定义的比较器),查找效率较高。

Map接口
HashMap

基于哈希表实现,键值对无序存储,提供了快速的插入、删除和查找操作。

TreeMap

基于红黑树实现,键值对有序存储,可以根据键的自然顺序或者比较器进行排序。

迭代器

所有集合框架中都支持迭代器,用于遍历集合中的元素。迭代器提供了安全的遍历方式,并且支持同时进行遍历和删除操作。

泛型

集合框架通过泛型机制提供了类型安全的数据存储和操作。使用泛型可以在编译时检测类型错误,避免运行时异常。

四、异常

异常是程序运行过程中出现的不正常情况,如果不进行处理,会导致虚拟机无法继续正常执行后续程序。异常分为两类:Error和Exception。

  1. Error

    • 这些是虚拟机无法解决的严重问题,例如内存不足或虚拟机内部错误。
    • 示例包括 StackOverflowError(栈溢出)和 OutOfMemoryError(堆溢出)。
  2. Exception

    • 这些是可以通过异常处理机制解决的一般性问题,分为编译时异常和运行时异常。
    • 编译时异常需要在代码中显式处理,如文件操作中的 IOException
    • 运行时异常是指可以通过程序逻辑避免的问题,如 NullPointerException 或 ArrayIndexOutOfBoundsException

异常处理机制通过 try-catch-finally 块来捕获和处理异常。例如:

try {
    // 可能会抛出异常的代码
    int result = 10 / 0; // 这里会抛出 ArithmeticException
} catch (ArithmeticException e) {
    // 异常处理逻辑
    System.out.println("除数不能为0");
} finally {
    // 无论是否发生异常,这里的代码块总会执行
    System.out.println("无论如何都会执行的代码块");
}

使用 throws 关键字可以在方法声明中指定可能抛出的异常类型,将异常抛给调用者处理。

异常处理的目的是提高程序的健壮性和可靠性,确保即使出现问题,程序也能继续执行或给出合适的反馈,而不是突然终止或进入不可预测的状态。

五、数据库

MySQL数据库

MySQL是一个关系型数据库管理系统,最早是由瑞典的MySQLAB公司开发,目前在Oracle旗下,是流行的数据库管理系统。

关系型数据库

以数据表为单位,表与表之间存在关联关系

非关系型数据库 redis

缓存 key:value;

sql :结构化查询语言简称(SQL)

是一种特殊的编程语言,用于对数据库管理操作和数据的增删改查操作。

DDL:数据(结构)定义语言,

创建和删除数据库表结构的语言

常用语句:create ,alter,drop,rename。

创建表的步骤:

1.确定表名,2.确定列名,

列的数据类型:

字符串型:

char(n):长度为n的定长字符串。

varchar(n):最大长度为n的变长字符串。

日期时间类型:

date 日期--年月日; datetime 时间--年月日 时分秒。

数值类型:
整数:

TINYINF 1;

SMALLINT 2;

MEDIUMINT 3;

INT 4;

BIGINT 8;

signed 有符号(默认有符号)

unsigned 无符号。

浮点数:

decimal(M,D)

M:精度,数据的总长度;

D:标度,小数点后的长度

TEXT列字符字符串:

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

DML

数据操纵语言DML(Data Manipulation Language)

常用语句: insert,delete,update

插入数据

 INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);

修改数据

UPDATE 表名 SET 列名 = ‘新值’WHERE 条件

删除数据

DELETE FROM 表名 WHERE 条件

TRUNCATE TABLE 表名;清空整张表

查询
单列查询

DQL(Data Query Language)数据查询语言查询是使用频率最高的一个操作,

可以从一个表中查询数据,也可以从多个表中查询数据。

select 查询列表 from 表名;

字符函数:

length():获取参数值的字节个数

char_length()获取参数值的字符个数

concat(str1,str2,.....):拼接字符串

upper()/lower():将字符串变成大写/小写

substring(str,pos,length):截取字符串 位置从1开始

instr(str,指定字符):返回子串第一次出现的索引,如果找不到返回0

trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)

lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度

rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度

replace(str,old,new):替换,替换所有的子串

逻辑处理

case when 条件 then 结果1 else 结果2 end; 可以有多个when

ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回

原本的值

if函数:if else的 效果 if(条件,结果1,结果2)

条件查询

select 结果列 from 表名 where 条件

比较

=, != 或<>, >, <, >=, <=

逻辑运算

and 与

or 或

not 非

模糊查询

like %字符%

%:通配符,任意多个字符

between .... and ... 表示在两个区间,包含临界值

in 判断某字段的值是否属于in列表中的某一项

in(... , ... , ...)

IS NULL(为空的)或 IS NOT NULL(不为空的)

排序

查询结果排序,使用 ORDER BY 子句排序 order by 排序列 ASC/DESC

asc代表的是升序,desc代表的是降序,如果不写,默认是升序

什么排序都没有,默认按主键进行升序排列

order by子句中可以支持单个字段、多个字段

数量限制

limit 开始位置(开始位置为0),查询的数量

SELECT * from table LIMIT 0,5

分组查询语法:

select 分组函数,列(要求出现在group by的后面)

from 表

[where 筛选条件]

group by 分组的列表

[having 分组后的筛选]

[order by 子句]

六、JDBC

 在项目中添加JAR文件

在使用JDBC之前,需要将相关的数据库驱动JAR文件添加到项目的构建路径中。这些JAR文件通常由数据库供应商提供,包含了JDBC驱动程序和必要的类库。

 加载驱动类

加载数据库驱动类是使用JDBC的第一步。每种数据库厂商都提供了自己的JDBC驱动类,例如MySQL的驱动类是 com.mysql.jdbc.Driver

建立与数据库的连接,获得连接对象

使用 DriverManager.getConnection() 方法建立与数据库的连接,并获得连接对象。连接字符串、数据库用户名和密码是建立连接的必要信息。

发送SQL语句

通过连接对象创建 StatementPreparedStatement 对象,用于发送SQL语句给数据库执行。

处理结果集

对于查询语句,需要处理从数据库返回的结果集 ResultSet。可以使用 ResultSet 的方法来迭代结果集并提取数据。

 关闭数据库连接

使用完数据库连接后,需要显式地关闭连接、语句和结果集,以释放数据库资源和避免资源泄漏。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT QThread 线程类的使用及示例

QThread 是 Qt 框架提供的一个用于处理多线程的类&#xff0c;它允许开发者编写具有并发功能的应用程序&#xff0c;提高程序的响应速度、执行效率和用户体验。 在操作系统中&#xff0c;线程是进程内的执行单元&#xff0c;拥有独立的执行路径。每个线程有自己独立的栈空间&a…

数据库同步最简单的方法

数据库同步到底有咩有简单的方法&#xff0c;有肯定是有的&#xff0c;就看你有咩有缘&#xff0c;看到这篇文章&#xff0c;你就是有缘人。众所周知&#xff0c;数据库同步向来都不是一件简单的事情&#xff0c;它很繁琐&#xff0c;很费精力&#xff0c;很考验经验&#xff0…

unity 导入的模型设置讲解

咱们先讲Model这一栏 Model Scene&#xff1a;场景级属性&#xff0c;例如是否导入灯光和照相机&#xff0c;以及使用什么比例因子。 Scale Factor&#xff1a;缩放因子&#xff08;也就是模型导入后大小如果小了或者大了在这里直接改是相当于该模型的大小的&#xff0c;而且在…

Windows系统开启python虚拟环境

.\env4socre\Scripts\activate : 无法加载文件 E:\SocreMan\env4socre\Scripts\Activate.ps1&#xff0c;因为在此系统上禁止运行脚本。 环境&#xff1a;windows 11、vscode 1、用管理员权限打开powershell 输入set-executionpolicy remotesigned&#xff0c;选择Y 2、返回v…

网工内推 | 网络工程师,IE认证优先,最高18k*14薪,周末双休

01 上海吾索信息科技有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1&#xff09;具备网络系统运维服务经验以及数据库实施经验&#xff0c;具备网络系统认证相关资质或证书&#xff1b; 2&#xff09;掌握常用各设备的运维巡检…

Logback-打印方法名及代码行号

背景 公司产品使用了logback作为日志输出框架&#xff0c;日志输出的pattern里配置了打印调用方法名及代码行号的配置&#xff0c;但是实际输出的日志方法名总是显示? 在强迫症的驱使下&#xff0c;开启了探秘之旅 Logback版本 1.2.3 项目中Logging.pattern配置如下&#xff1…

【课程总结】Day12:YOLO的深入了解

前言 在【课程总结】Day11&#xff08;下&#xff09;&#xff1a;YOLO的入门使用一节中&#xff0c;我们已经了解YOLO的使用方法&#xff0c;使用过程非常简单&#xff0c;训练时只需要三行代码&#xff1a;引入YOLO&#xff0c;构建模型&#xff0c;训练模型&#xff1b;预测…

DevOps CMDB平台整合Jira工单

背景 在DevOps CMDB平台建设的过程中&#xff0c;我们可以很容易的将业务应用所涉及的云资源&#xff08;WAF、K8S、虚拟机等&#xff09;、CICD工具链&#xff08;Jenkins、ArgoCD&#xff09;、监控、日志等一次性的维护到CMDB平台&#xff0c;但随着时间的推移&#xff0c;…

《昇思25天学习打卡营第5天|onereal》

ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&#xff1a;Pointw…

【51单片机入门】点亮数码管

文章目录 前言仿真图如何去绘制一个数字示例代码选择某个数码管显示某个数字 示例代码总结 前言 在嵌入式系统的世界中&#xff0c;单片机扮演着至关重要的角色。51单片机&#xff0c;作为最早的微控制器之一&#xff0c;至今仍被广泛应用在各种设备中。本文将介绍如何使用51单…

嵌入式Linux的浮点运算能力测试

嵌入式Linux的浮点运算能力测试 今天需要对一款ARM CPU的浮点数运算能力进行测试&#xff0c;采用了台式机上常用的SuperPI相同的原理&#xff1a;计算一定小数位数的圆周率来测试硬件的浮点数计算能力和稳定性。 首先下载计算软件的源代码&#xff0c;可以使用下面命令&#…

python使用动态属性访问JSON类数据,Get it!

目录 1、基础访问:内置json模块 📦 1.1 json.loads转换字符串 1.2 动态属性访问技巧 2、面向对象方式处理JSON 🛰️ 2.1 创建JSON数据模型类 2.2 动态属性与方法绑定 3、类型安全: 数据类(dataclasses)应用 🔒 3.1 数据类基础 3.2 自动从JSON解构数据 3.3 动态…

LLM大模型实战 —— DB-GPT阿里云部署指南

简介&#xff1a; DB-GPT 是一个实验性的开源应用&#xff0c;它基于FastChat&#xff0c;并使用vicuna-13b作为基础模型, 模型与数据全部本地化部署, 绝对保障数据的隐私安全。 同时此GPT项目可以直接本地部署连接到私有数据库, 进行私有数据处理&#xff0c; 目前已支持SQL生…

与国际接轨,与行业同行!2024深圳国际自有品牌展今日开幕!

2024深圳国际自有品牌展&#xff08;Marca China International Private Label Fair&#xff0c;简称“Marca China”&#xff09;于6月27日在深圳会展中心&#xff08;福田&#xff09;盛大开幕&#xff01;来自零售、电商、品牌等渠道的买家与专业观众&#xff0c;以及来自全…

提高LabVIEW程序可靠性

​提高LabVIEW程序的可靠性是确保系统稳定运行、减少故障和维护成本的重要措施。以下从多个方面详细分析如何提高LabVIEW程序的可靠性 1. 选择合适的架构 1.1 状态机架构 适用情况&#xff1a; 多状态、多步骤操作。 具体例子&#xff1a;在一个自动测试系统中&#xff0c;…

数学建模---最小生成树问题的建模~~~~~Matlab代码

目录 1.相关概念 &#xff08;1&#xff09;什么是树 &#xff08;2&#xff09;生成树和最小生成树&#xff1a; 2.适用赛题 &#xff08;1&#xff09;赛题分类 &#xff08;2&#xff09;不同之处 3.两种算法 &#xff08;1&#xff09;prim算法 &#xff08;2&…

PlatformIO开发环境

PlatformIO是一个开源的生态系统&#xff0c;用于构建物联网应用&#xff0c;它支持多种微控制器&#xff08;MCU&#xff09;和硬件开发板&#xff0c;并且与各种IDE集成良好&#xff0c;如VSCode, Atom等&#xff0c;使得跨平台的固件开发变得更加简单和高效。 ### 平台介绍…

计算机图形学入门21:辐射度量学

1.前言 在使用Blinn-Phong着色模型的时候&#xff0c;定义了一个光的强度I(Intensity)&#xff0c;假如I等于10。那么I等于10是什么意思&#xff1f;它肯定有单位和物理意义。另一方面&#xff0c;whited-style光线追踪模型也不是准确的模型&#xff0c;因为做了很多假设&#…

VS Code快速选定当前括号中内容 快速选择当前行内容(必备)

文章目录 快速选定当前括号内容效果方法 快速选定当前行内容效果操作 快速选定当前括号内容 效果 方法 下载插件 默认快捷键选中当前括号内容 ctrl w 可修改快捷键 快速选定当前行内容 效果 操作 点击左键三次即可

鸿蒙HarmonyOS自定义组件开发和使用

自定义组件的介绍 在开发和使用自定义组件直接&#xff0c;我们需要了解什么是自定义组件&#xff1f; 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为系统组件&#xff0c;由开发者定义的称为自定义组件。在进行 UI 界面开发时&#xff0c;通常…