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.mzph.cn/web/36447.shtml

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

相关文章

【redis】redis简单入门

1、简介 定义&#xff1a;Redis是一个开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息中间件。特点&#xff1a; 高性能&#xff1a;读写速度非常快&#xff0c;支持每秒执行数十万次读写操作。基于内存&#xff1a;所有数据都存储在内存中&#x…

Springboot下使用Redis管道(pipeline)进行批量操作

之前有业务场景需要批量插入数据到Redis中&#xff0c;做的过程中也有一些感悟&#xff0c;因此记录下来&#xff0c;以防忘记。下面的内容会涉及到 分别使用for、管道处理批量操作&#xff0c;比较其所花费时间。 分别使用RedisCallback、SessionCallback进行Redis pipeline …

Swoole实践:如何使用协程构建高性能爬虫

随着互联网的普及&#xff0c;web爬虫已经成为了一个非常重要的工具&#xff0c;它可以帮助我们快速地抓取所需要的数据&#xff0c;从而降低数据获取成本。在爬虫的实现中&#xff0c;性能一直是一个重要的考虑因素。swoole是一款基于php的协程框架&#xff0c;它可以帮助我们…

Mathematica训练课(44)-- 一些符号#,,//, /. 的整理

①“//”在后面写成你要执行的操作,即可执行。 注意:这一函数作用域标志的优先级是很靠后的,也就是说它会对一整行式子作用。 ②@的作用是在@后面的第一个元素进行操作 Sqrt @ a(*@作用在@后面、对离@最近的仅仅一个元素作用*) 例如,下面 若作用对象外面套着{},那么就要…

向openHarmony设备添加gdb调试工具

1. 下载gdb源码 国内从官网下载源码比较慢&#xff0c;可以从清华的镜像网站&#xff08;清华大学开源软件镜像站 | Tsinghua Open Source Mirror&#xff09;上下载。下载地址&#xff1a; Index of /gnu/gdb/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 选择…

centos下安装ffmpeg的详细教程

0.ffmpeg介绍 FFmpeg 是一个开源的多媒体框架&#xff0c;用于处理音频、视频和其他多媒体文件。它提供了录制、转换和流式传输音频和视频功能。FFmpeg 是一个非常强大和灵活的工具&#xff0c;广泛应用于媒体转换、视频编辑、流媒体传输等领域。 1.准备压缩包 链接&#xff1…

总结:Hadoop高可用

当Hadoop的NameNode宕机时&#xff0c;可以采取以下步骤来解决问题&#xff1a; 重新启动NameNode&#xff1a;尝试重新启动NameNode服务&#xff0c;有时候它可能会自行恢复正常运行。 恢复NameNode备份&#xff1a;如果启动NameNode失败&#xff0c;可以尝试恢复之前备份的N…

网络研究观:网络犯罪简报

通过犯罪研究人员精选的新闻提要了解最新的全球网络犯罪威胁。 了解不同的数字欺诈以及如何保护自己。 1&#xff1a;NIA 指控五人涉嫌国际人口贩卖和网络诈骗 印度国家调查局指控五名嫌疑人涉嫌一起重大人口贩卖和网络诈骗案&#xff0c;该案涉及印度青年被迫进入老挝的诈骗…

Python中常用的有7种值(数据)的类型及type()语句的用法

目录 0.Python中常用的有7种值&#xff08;数据&#xff09;的类型Python中的数据类型主要有&#xff1a;Number&#xff08;数字&#xff09;、Boolean&#xff08;布尔&#xff09;、String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Tuple&#xf…

使用java代码实现GUI画面的简易项目操作

要使用Java创建一个图形用户界面&#xff08;GUI&#xff09;&#xff0c;我们可以使用Swing库&#xff0c;它是Java提供的一个标准GUI工具包。以下是一个简单的Java Swing程序示例&#xff0c;它创建了一个窗口&#xff08;JFrame&#xff09;&#xff0c;并在其中添加了一个标…

SQL中group by详解

在 SQL 中&#xff0c;GROUP BY 语句用于将结果集按照一个或多个列进行分组。 其基本语法为&#xff1a; SELECT column1, column2, aggregate_function(column3) FROM table_name GROUP BY column1, column2;以下是对其主要部分的详细解释&#xff1a; GROUP BY 子句后面跟…

我重生了,学会了珂朵莉树

还玩线段树吗&#xff1f; 前言&注明 我好像一万年没更新了&#xff1f; 化学&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

【408考点之数据结构】树和森林的基本概念、二叉树转森林、以及树和森林的遍历

树和森林的基本概念、二叉树转森林、以及树和森林的遍历 一、树和森林的基本概念 树&#xff08;Tree&#xff09; 是一种重要的非线性数据结构&#xff0c;由n(n≥0)个节点组成&#xff0c;其中有一个根节点和若干子树&#xff0c;这些子树又是若干树的集合。 森林&#xf…

检索增强生成 (RAG):揭开这一术语的神秘面纱并解释其带来的价值

一、介绍 如今&#xff0c;数据已成为新的黄金&#xff0c;而高效筛选这些丰富信息的能力则是成功企业脱颖而出的关键。Retrieval Augmented Generation&#xff08;RAG&#xff09;是创新的标杆&#xff0c;尤其是在知识管理领域。它不再只是为了存储信息&#xff0c;而是为了…

在运行中遇到扫描包问题

问题描述&#xff1a;当我们看到这个上面一行代码时就代表我们有个包没有被当前的Spring容器给扫描到&#xff0c;关于这个问题我们有两个&#xff1a;第一把整个包导进来&#xff0c;第二用哪个导哪个

Linux Swap

Swap: 页面换出&#xff1a;就是在 Swap 机制下&#xff0c;当内存资源紧张时&#xff0c;内核就会把不经常使用的这些匿名页中的数据写入到 Swap 分区或者 Swap 文件中。从而释放这些数据所占用的内存空间。 页面换入&#xff1a;就是当进程再次访问那些被换出的数据时&…

《人生苦短,我用python·六》ctypes 封装 C++ 接口并在 Python 中调用

编写 C 代码 首先&#xff0c;编写一个简单的 C 函数并将其编译成 DLL 动态链接库 // mylib.cpp #include <iostream>extern "C" {__declspec(dllexport) int add(int a, int b) {return a b;} }编写 C 头文件 虽然在这个简单示例中头文件不是必需的&#xf…

7 个不容忽视的开源安全工具

专业人士选择的第一个工具通常是开源选项,因为它们得到了广泛社区的保证和支持。此代码是支持安全可靠的互联网的基础的一部分。 最近,XZ Utils 等丑闻让用户犹豫不决。开放性是否是攻击的危险载体?还有其他问题在等着他们吗? 辩护者指出,虽然开放性可以让某些攻击变得更…

深度学习实战82-新的研究方向:大模型与图模型结合生成大型图模型,大图模型相关挑战和机遇的观点

大家好,我是微学AI,今天给大家介绍一下深度学习实战82-新的研究方向:大模型与图模型结合生成大型图模型,大图模型相关挑战和机遇的观点。随着人工智能的飞速发展,大型模型已成为人工智能领域最新的突破性成就。在图方面,大型模型尚未取得与自然语言处理和计算机视觉等其他…

java:aocache 0.4.0 缓存控制机制

aoocache发布第一个版本0.1.0时&#xff0c;没有考虑到使用aocache的项目对方法缓存的控制需求。 场景 给同事做培训时&#xff0c;同事提到这个需求&#xff0c;他希望能够有方法主动去清理指定方法的缓存&#xff1a; 他的数据是由其他服务启动时提供的&#xff0c;他的方法…