java复习宝典,jdbc与mysql数据库

一.java

1.面向对象知识

(1)类和对象

类:若干具有相同属性和行为的对象的群体或者抽象,类是创建对象的模板,由属性和行为两部分组成。

类是对象的概括或者抽象,对象是类的实例化。

举例:例如车有很多类型,但是这些都是车,车这个大类就是一个类,每种车都是一个对象。

1.类的声明

[修饰符] class 类名{//类的声明部分 [成员变量] [成员方法] }

员变量的声明: [修饰符] 数据类型 变量名 [= 初始值];

成员方法的声明:

[修饰符] 返回值类型 方法名([数据类型 参数名,……]){
    //方法体,该方法完成的功能代码
}

2.什么是构造器


类中的构造器也叫构造方法,在进行创建对象的时候必须进行调用。并且每一个类中都隐藏一个无参构造。

格式:public 类名称(形参 实参){
方法体
}

构造器:

      1.和类名必须相同

      2.没有返回值

作用:

      1.new的本质就是在调用构造方法

      2.初始化对象的值

注意点:定义有参构造之后,如果还想用无参构造的话,那么就必须显示的定义一个无参构造


3.构造器的声明:

[修饰符] 构造器名([数据类型 参数名,……]){
  //构造器完成的功能代码
}

注意:
①构造器名必须和类名一致
②构造器没有返回值类型
③任何类都含有构造器。如果没有显式地定义类的构造器,
④则系统会为该类提供一个默认的无参的构造器。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。

4.类的使用


类变量的声明:类名 对象名;
类对象的创建,赋值给变量:对象名 = new 构造器([参数列表])

成员变量与局部变量:

成员变量:声明在类中方法体之外、可以有缺省值、可以使用修饰符。作用域:整个类
局部变量:声明在方法体或代码块中、没有缺省值、只能使用final修饰。作用域:当前方法体
参数:参数的本质是特殊的局部变量,只能定义在方法的小括号中

5.重载


方法的重载OverLoading: 同一个类中定义了多个方法名相同而参数不同的方法

重载在同一个类中,方法名相同,参数不同(参数的个数、顺序、类型不同)

方法的返回值类型:

(1)无返回值类型:void,return;//结束方法体

(2)有返回值类型为:数据类型(基本数据类型、引用数据类型),return 数据;//结束方法体,并且返回一条数据

6.方法重写

特点:

      1.方法名必须相同。

      2.参数列表必须相同。

      3.修饰符范围可以扩大。

      4.抛出的异常:可以被缩小但是不能扩大。

      子类的方法和父类必须要一致,方法体不同。

为什么需要重写?

父类的功能:子类可能不一定需要,或者是不一定满足。

7.static关键字


      1.static静态变量在类中是共享的。

      2.非静态方法可以访问本类中的所有静态方法。

      3.静态方法可以调用本类中所有的静态方法。

原因:因为静态的方法是随着类的加载一起加载出来的,加载之前还没有普通的方法,所以就无法调用。

8.this关键字

this关键字:

this是一种特殊的引用,指向当前对象

9.super关键字


super代表的是父类对象,

使用方式:
super.属性名、super.方法名();用于在子类中调用父类被隐藏的同名实例变量
super([参数列表])用于在子类的构造方法中调用父类的构造方法

每一个子类的构造方法在没有显示调用super()系统都会提供一个默认的super(),super()必须是构造器的第一条语句

10.final关键字

final 关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点:

修饰类:类不能继承,final 类中的所有成员方法都会被隐式的指定为 final 方法;
修饰符变量:该变量为常量,,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能让其指向另一个对象。
修饰符方法:方法不能重写

 二.java的三大特征

1.封装


定义:将一些较为复杂的内部结构进行隐藏,大部分程序的细节都应该藏起来。

一旦使用了private进行修饰,本类当中可以随意访问,但是超出了本类就不可以访问了。

封装的意义:

      1.提高程序的安全性,保护数据。

      2.隐藏代码

      3.统一接口。

      4.提高了系统的可维护性

2、继承


对象用来封装数据和功能,但我们要创建一个新类,然而它又与已存在的类具有部分相同的属性或功能,如动物是所有其他动物的子类,其他动物是该类的子类,例如动物和狗,可以使用继承来实现。

3、多态


通过将子类对象引用赋给父类对象引用来实现动态方法调用。

三.抽象类

抽象类定义;在普通类的结构里面增加抽象方法的组成部分。

抽象方法定义:是指没有方法体的方法。

关键字为:abstract。

注意:

      1.不能new这个抽象类,只能靠它的子类进行实现。

      2.抽象类中可以写普通的方法。

      3.抽象方法必须在抽象类中。

抽象类的声明: [修饰符] abstract class 类名 [extends 父类名]{类体}
抽象方法的声明: [修饰符] abstract 返回值类型 方法名([参数列表]);

四.接口

在Java中接口不仅仅是程序开发过程中“约定”,更是更加抽象化的抽象类。

接口的声明语法: [修饰符] interface 接口名{[常量];[抽象方法];}

接口实现的语法: [修饰符] class 类名 [extends 父类名] [implements 接口1,接口2,……]{类体部分}

接口的作用:

  • 提高程序的重用性
  • 提高程序的可扩展性
  • 降低程序的耦合度
  • 实现了多继承
五.异常

异常英文(Exception),意思是例外,这些例外情况需要我们写程序做出合理的处理,而不至于让程序崩溃。

异常指程序运行中出现的不期而至的各种状况:文件找不到,网络连接错误,非法参数等。

异常发生在程序运行期间,它影响了正常的执行流程。

分类:检查时异常;运行时异常;错误。

          检查时异常:检查时异常最具有代表性的就是用户错误或者是问题引起的异常,这种异常是我们程序员无法进行预测的。例如我们要打开一个文件时文件不见了,这些异常都是在编译时不能被简单的忽略的。

          运行时异常:运行时异常是可能被程序员避免的异常,与检查时异常相反,运行时异常可以在编译时被忽略。

      Error    错误:错误不是异常,而是不被程序员控制的问题,错误在代码中通常被忽略。例如当栈溢出时,错误就产生了,并且在程序编译的时候也无法被找到。
 

异常的体系结构:

1.抛出以及捕获异常


关键字:try、catch、final、throw、throws。

      try:抛出异常(尝试着去处理什么东西)。

      catch:捕获异常。

      final:无论有什么异常发生,finally都会被执行(可以运行清理类型等收尾善后性质的语句)。

      throw:当程序发生异常而无法处理的时候,会抛出对应的异常对象。

      throws:throws用来在类中捕获异常信息,标明方法可能抛出的异常。

2.自定义异常


定义:使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常,用户自定义异常类,只需要继承Exception类即可。

在程序中使用自定义异常类,大体可以分为以下步骤。

      1.创建自定义常类。

      2.在方法中通过throw关键字抛出异常。

      3.如果在当前抛出异常的方法中处理异常,可以使用try——catch语句来捕获异常并处理,否则在方法的声明处通过throws关键字指明要抛出给方法调用的异常,继续下一步操作。

      4.在出现异常方法的调用者中捕获并处理异常。


二.jdbc
1.JDBC(java DataBase Connectivity) 


    java语言连接数据库。

   2.JDBC的本质:

   JDBC是一套接口(面向接口写实现类,能够解耦合,提高代码的扩展力,因为每个数据库底层的实现原理是不同的,如果没有接口 访问不同数据库就要不同的代码。

 jdbc驱动: 所有的数据库连接的驱动都以 jar包存在(里面是.class)  ,有很多的 .class文件他们是对JDBC接口的实现类 由数据库厂商提供连接相应的数据库 官网下载   。

3.为什么要使用JDBC


有了JDBC,java开发人员只需要编写一次程序,就可以访问不同的数据库.

J a v a A P I 中 提 供 了 操 作 数 据 库 的 标 准 接 口 , 最 终 由 不 同 的 数 据 库 开 发 商 实 现 这 些 标 准 接 口 来 对 数 据 库 操 作 . Java定义者制定了JDBC规范,数据库开发商实现接口, 程序员。  


二.连接步骤


1.在项目添加jar文件

  2.加载驱动类  Class.forName("com.mysql.cj.jdbc.Driver");

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

   String url = "jdbc:mysql://127.0.0.1:3306/schooldb?serverTimezone=Asia/Shanghai";
   String user = "root";
   String password = "root";
   Connection connection = DriverManager.getConnection(url,user,password);


   4.发送sql

          Statement st = connection.createStatement();
           st.executeUpdate("INSERT INTO student(NAME,num,gender,birthday,phone,address,reg_time,majorid)" +
                "VALUES('"+name+"','"+gender+"','"+birthday+"','"+phone+"','"+address+"',now(),"+majorid+")");
  
          PreparedStatement ps =  connection.prepareStatement("delete from student where num=?");
                          ps.setObject(1,num);
                          ps.executeUpdate();

三.mysql数据库

(1)什么是数据库?数据库使用来干什么的?


例如:学校的高校图书管理:图书馆有包含图书信息的数据库,该数据库拥有借阅者信息,图书信息,借书信息等,通过该数据库图书管理员可以查找借阅者的信息,借阅者可以查询借阅图书的信息等,还有公司员工数据库等。数据库(DBMS)是为了方便数据的存储和管理,它将数据按照特定的 规则存储在磁盘上,就是一个存储数据的仓库。简单来说数据库就是用来存储信息的仓库,但是存储的信息不是乱存,而是通过建立关系表,通过各关系表来存储信息,删除信息,查找信息等。

(2)关系.属性.元组.主码


关系:关系简单来说就是一个表,例如:高校图书管理中的读者表,

属性:属性就是关系表中每一列,如:高校图书管理中读者表中的读者卡号,姓名,性别,单位,办卡日期等。

元组:元组就是关系表中的每一行数据,如:高校图书管理中读者表中的一组数据,(2100001,李丽,女,数计学院,2021-03-06)

主码:主码就是在关系表中属性或属性组可以唯一表示一个元组,而其子集不能,则称该属性或者属性组为一个主码,如高校图书管理中读者表中的读者卡号。

(3)数据库相关语句

1、创建数据库
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2、查询数据库

SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)

SELECT * FROM 表名称;
SELECT 列名称 FROM 表名称;

3、删除数据库
DROP DATABASE db_name;
4、修改数据库
-- 修改数据库的字符编码和排序方式
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
5、选择数据库
USE db_name;

6、删除表数据

delete语法

delete from 表名 where 删除的条件

7.distinct去重

作用 : 去掉SELECT查询返回的记录结果中重复的记录,只返回一条所有列的值都相同数据

select distinct user_id,user_name from tb_user; 

8、where条件查询

作用:用于检索数据表中 符合条件 的记录

搜索条件可由一个或多个逻辑表达式组成 , 结果一般为真或假.

LIKE模糊查询-通配符

%(百分号)匹配零个或者多个任意字符
_(下划线)匹配一个任意字符
-- 模糊匹配 【like "_"占位,"%"代表通配符】 
select * from t_user where user_name like 'han%'; 
select * from t_user where user_name like '_han%'; 
select * from t_user where user_name like '%hanmei%'; 

IN字段指定多个值查询

select * from t_user where user_id in (5,6,9); 
-- 查询结果等价于下面的结果集
select * from t_user where user_id = 5 UNION ALL
select * from t_user where user_id = 6 UNION ALL 
select * from t_user where user_id = 9 


BETWEEN AND 区间查询

-- between and 查询 
select * from t_user where user_id between 6 and 9; 
select * from t_user where user_id >=6 and user_id <=9;

IN子查询

什么是子查询?

在查询语句中的WHERE条件子句中,又嵌套了另一个查询语句
嵌套查询可由多个子查询组成,求解的方式是由里及外;
子查询返回的结果一般都是集合,故而建议使用IN关键字;
select * from t_user where user_id in
(select user_id from t_user where user_id where user_id>9)

group by 分组查询
配合函数count(field)获取符合条件出现的非null值的次数
sum(field)获取所有符合条件的数据的总和
avg(field)或者平均值
-- 统计所有用户信息中男女的平均身高
-- 使用group by注意在查询中出现字段必须是group by后面字段
select user_gender as 性别,avg(user_height) 平均身高,sum(user_height) 总身高,count(user_gender) 总数 from t_user group by user_gender;
having 分组之后的条件,一般和group by联合使用

select user_gender,count(*) as 性别统计 from t_user group by user_gender having 性别统计>1;


10、order by排序查询
ORDER BY field DESC;降序查询

ORDER BY field ASC;升序查询(默认的排序)可以省略不写

select * from t_user order by user_id asc;
select * from t_user order by user_id desc;
-- order by 放置在group by的后面
select user_gender as 性别,avg(user_height) 平均身高,sum(user_height) 总身高,count(user_gender) 总数 from t_user group by user_gender order by 总身高 desc;

11、limit分页选择语句
LIMIT 后边可以跟两个参数,如果只写一个表示从零开始查询指定长度,如果两个参数就是从第一个参数开始查询查询长度是第二个参数的值,俩个参数必须是整形。
 

外键:

(1)外键概念
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。

在实际操作中,将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。

外键作用

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,约束。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

(2)创建外键
建表时指定外键约束

(4)连接查询

JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

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

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

相关文章

从传统到智能:视频汇聚EasyCVR+AI视频监控如何助力仓储的智能化转型

随着物流行业的快速发展和市场竞争的加剧&#xff0c;仓储管理对于保证货物安全、提高运营效率显得尤为重要。传统的仓储监控方式已难以满足现代仓储管理的需求&#xff0c;因此&#xff0c;仓储视频智能监控解决方案应运而生。方案通过集成先进的视频监控技术、智能分析算法、…

xhs 旋转验证码剖析和协议算法实现

【作者主页】&#xff1a;小鱼神1024 【擅长领域】&#xff1a;JS逆向、小程序逆向、AST还原、验证码突防、Python开发、浏览器插件开发、React前端开发、NestJS后端开发等等 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#…

Vue + SpringBoot 实现文件的断点上传、秒传,存储到Minio

一、前端 1. 计算文件的md5值 前端页面使用的elment-plus的el-upload组件。 <el-upload action"#" :multiple"true" :auto-upload"false" :on-change"handleChange" :show-file-list"false"><FileButton content&…

【系统架构设计师】六、信息系统基础知识(定义|分类|企业信息化系统|生命周期|建设原则|开发方法)

目录 一、信息系统的定义 二、信息系统的分类 三、企业使用的信息化系统 四、信息系统的生命周期 五、信息系统建设原则 六、信息系统的开发方法 6.1 结构化方法 6.2 原型法 6.3 构件化开发方法 6.4 面向服务的方法 6.5 面向对象的方法 6.6 敏捷方法 历年真题考情&#x…

Linux基础 - 存储结构与管理硬盘

目录 零. 简介 一. 文件系统 Ubuntu 文件系统结构&#xff1a; 路径: 二. 硬盘管理 零. 简介 Linux 文件系统是一种用于组织和存储文件、目录以及相关数据的架构。 常见的 Linux 文件系统有&#xff1a; Ext4&#xff08;Fourth Extended File System&#xff09;&#…

Java中Stream的特性

Stream新特性 被称之为Stream流&#xff0c;用于操作集合或者数组中的数据 优势&#xff1a;Stream流大量的结合了Lambda的语法风格&#xff0c;代码更简洁&#xff0c;可读性更好 使用步骤 先获取数据源&#xff0c;获取Stream流 Collect…

S_LOVE多端恋爱小站小程序源码 uniapp多端

S_LOVE多端恋爱小站小程序源码&#xff0c;采用uniapp多端开发框架进行开发&#xff0c;目前已适配H5、微信小程序版本。 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89421726 更多资源下载&#xff1a;关注我。

【arduino】使用最新版本的软件2.3版本,安装设备驱动,成功上传设备到ESP32中,使用超便宜的主板16元的arduino就可以进行开发

1&#xff0c;下载软件 https://www.arduino.cc/en/software 购买硬件设备超级便宜&#xff1a; https://detail.1688.com/offer/607729642347.html?spma26352.13672862.offerlist.121.7af9638afU2nu2 https://detail.1688.com/offer/574143571194.html?_t1719333276237&…

基于ESP8266串口WIFI模块ESP-01S在AP模式(即发射无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能

基于ESP8266串口WIFI模块ESP-01S在AP模式(即发射无线信号( WiFi))下实现STC单片机与手机端网路串口助手相互通信功能 ESP8266_01S引脚功能图ESP8266_01S原理图ESP8266_01S尺寸图检验工作1、USB-TTL串口工具(推荐使用搭载CP2102芯片的安信可USB-T1串口)与ESP8266_01S WiFi…

如何给小语种视频生成字幕

目前我们常看的有视频有中、英、日、韩这四种语言&#xff0c;如果我们想给其他的不常用的语言生成字幕怎么办&#xff1f;今天教大家如何给其他语言生成视频字幕文件 打开智游剪辑&#xff08;zyjj.cc&#xff09;搜索字幕生成&#xff0c;选择多语种那个就可以了 然后上传我们…

学习TTS遇到的问题2 什么是TCN模型

学习TTS遇到的问题2 什么是TCN模型 什么是TCN模型怎么理解 TCN中的 dilation&#xff1f;什么是 Dilation具体例子数学表达作用例子代码示例 什么是TCN模型 https://juejin.cn/post/7262269863343079479 https://blog.csdn.net/weixin_57726558/article/details/132163074 由下…

外媒新闻发稿:2024年度国外主流新闻媒体和海外媒体软文分发平台有哪些?

2024年度主流海外媒体新闻发稿和海外媒体软文分发平台有很多&#xff0c;下面是一些常见的和广受认可的平台&#xff1a; 主流新闻媒体 CNN - 美国知名新闻网络&#xff0c;覆盖广泛的国际新闻。BBC - 英国广播公司&#xff0c;提供全球新闻和深入报道。纽约时报 - 美国主流报…

数字逻辑课程设计报告

##汽车尾灯控制器设计 ##简单交通灯控制器设计 ##运算器设计 。。。。。。。。 如果对上述报告感兴趣后台私信我

ICMAN液位检测——WS003B管道检测模组

ICMAN液位检测之WS003B管道检测模组 体积小&#xff0c;成本低&#xff0c; 液位检测精度高&#xff0c; 有水输出低电平无水高电平&#xff0c; 适用于饮水机、咖啡机、扫地机器人、洗地机等&#xff0c; 有需要朋友快联系我吧&#xff01; AWE展会不容错过的ICMAN检测模组…

基于weixin小程序的民宿短租系统的设计与实现

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;房主管理&#xff0c;房间类型管理&#xff0c;用户管理&#xff0c;民宿信息管理&#xff0c;民宿预订管理&#xff0c;系统管理 小程序功能包括&#xff1a;系统首页&#xff0c;民宿信息&#xff0c…

螺栓的拧紧扭矩计算

对于采用控制扭矩方式拧紧的螺栓连接而言&#xff0c;螺栓扭矩是一个非常重要的参数&#xff0c;扭矩的大小决定了螺栓预紧力的大小&#xff0c;而螺栓预紧力又是预紧型螺栓连接的灵魂。前文讨论了螺栓扭矩的校验&#xff0c;即如何验证螺栓扭矩是否满足设计要求&#xff0c;与…

代码随想录——买股票的最佳时机Ⅱ(Leecode122)

添加链接描述 贪心 局部最优&#xff1a;手机每天的正利润 全局最优&#xff1a;求最大利润 class Solution {public int maxProfit(int[] prices) {int res 0;for(int i 1; i < prices.length; i){res Math.max(prices[i] - prices[i - 1], 0);}return res;} }

出现 defineProps is a compiler macro and no longer needs to be imported. 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行前端代码的时候,出现如下问题: [@vue/compiler-sfc] defineProps is a compiler macro and no longer needs to be imported.[@vue/compiler-sfc] defineEmits is a compiler macro and no longer needs to be impo…

Jboss多个远程命令执行漏洞(CVE-2017-12149、CVE-2015-7501、CVE-2017-7504)

目录 Jboss介绍 CVE-2017-12149 漏洞产生的原因 环境搭建 漏洞检测和利用 反弹shell CVE-2015-7501 漏洞产生的原因 环境搭建 漏洞检测和利用 反弹shell CVE-2017-7504 漏洞产生的原因 环境搭建 漏洞检测和利用 反弹shell 这一篇是参考大佬的好文章进行Jboos的…

了解负载均衡器

现代系统变得越来越复杂&#xff0c;但这种复杂性确保了处理大量的网络流量和请求。 简单来说&#xff0c;负载均衡器的主要思想就像它的名字一样&#xff0c;它跨服务器提供直接的客户端请求。换句话说&#xff0c;负载均衡器是在多台服务器之间分配网络或应用程序流量的系统…