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)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

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

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

相关文章

安卓ROM修改默认开启adb调试

要在安卓ROM中修改默认开启ADB调试&#xff0c;你可以遵循以下步骤。请注意&#xff0c;这些步骤可能因设备型号、ROM版本和具体定制方式而有所不同&#xff0c;但基本流程是相似的&#xff1a; 准备工作&#xff1a; 确保你有一台可root的安卓手机&#xff0c;并且已经解锁了…

计算机系统基础知识(下)

嵌入式系统以及软件 嵌入式系统是为了特定应用而专门构建且将信息处理过程和物理过程紧密结合为一体的专用计算机系统&#xff0c;这个系统目前以涵盖军事&#xff0c;自动化&#xff0c;医疗&#xff0c;通信&#xff0c;工业控制&#xff0c;交通运输等各个应用领域&#xff…

鸿蒙开发Ability Kit(程序框架服务):【Stage模型绑定FA模型ServiceAbility】

Stage模型绑定FA模型ServiceAbility 本小节介绍Stage模型的两种应用组件如何绑定FA模型ServiceAbility组件。 UIAbility关联访问ServiceAbility UIAbility关联访问ServiceAbility和UIAbility关联访问ServiceExtensionAbility的方式完全相同。 import { common, Want } from…

【Matlab 六自由度机器人】机器人动力学之推导拉格朗日方程(附MATLAB机器人动力学拉格朗日方程推导代码)

【Matlab 六自由度机器人】机器人动力学概述 近期更新前言正文一、拉格朗日方程的推导1. 单自由度系统2. 单连杆机械臂系统3. 双连杆机械臂系统 二、MATLAB实例推导1. 机器人模型的建立2. 动力学代码 总结参考文献 近期更新 【汇总】 【Matlab 六自由度机器人】系列文章汇总 …

Linux——31个普通信号

每种信号的含义 在Linux操作系统中&#xff0c;信号是一种进程间通信的方式&#xff0c;用于通知进程发生了某种事件。Linux中的普通信号&#xff08;standard signals&#xff09;有31个&#xff0c;每个信号都有特定的用途。以下是这31个普通信号的列表及其描述&#xff1a;…

为什么序列化???

跨进程调用&#xff0c;进行数据传输时&#xff0c;无法直接传递对象&#xff0c;需要将对象通过序列化的方式转为字节流或字符流&#xff08;json&#xff09;&#xff0c;所以需要进行序列化。 需要共享数据时&#xff0c;直接传递对象通常是不可行的&#xff0c;因为对象的…

C# UDP网络通信

TCP和UDP基本概念 TCP:(Transmission Control Protocol)是一种面向连接、可靠的、基于字节流的传输层通信协议。并且提供了全双工通信&#xff0c;允许俩个应用直接建立一个可靠的连接 以进行数据交换 /UDP:(User Datagram Protocol):是一种无连接、不可靠、基于数据报文传输层…

每日复盘-20240625

今日关注: 20240625 六日涨幅最大: ------1--------300930--------- 屹通新材 五日涨幅最大: ------1--------300930--------- 屹通新材 四日涨幅最大: ------1--------300386--------- 飞天诚信 三日涨幅最大: ------1--------300386--------- 飞天诚信 二日涨幅最大: ------…

JVM专题十:JVM中的垃圾回收机制

在JVM专题九&#xff1a;JVM分代知识点梳理中&#xff0c;我们主要介绍了JVM为什么采用分代算法&#xff0c;以及相关的概念&#xff0c;本篇我们将详细拆分各个算法。 垃圾回收的概念 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;确实是计算机编程中的…

【Android面试八股文】你能说一说RecycleView与ListView的对比吗?着重说一下缓存策略,优缺点。

文章目录 一、考察的知识点二、RecycleView与ListView的对比2.1 布局效果2.2 Item点击事件2.3 空数据处理2.4 头尾布局2.5 局部刷新2.6 动画效果2.7 缓存机制2.7.1 层级不同2.7.2 缓存内容不同2.7.3 缓存机制2.7.4 ListView与RecyclerView缓存级别的对比2.7.4.1 ListView(两级缓…

【自然语言处理系列】探索NLP:使用Spacy进行分词、分句、词性标注和命名实体识别,并以《傲慢与偏见》与全球恐怖活动两个实例文本进行分析

本文深入探讨了scaPy库在文本分析和数据可视化方面的应用。首先&#xff0c;我们通过简单的文本处理任务&#xff0c;如分词和分句&#xff0c;来展示scaPy的基本功能。接着&#xff0c;我们利用scaPy的命名实体识别和词性标注功能&#xff0c;分析了Jane Austen的经典小说《傲…

discuz插件之优雅草超级列表互动增强v1.2版本更新

https://doc.youyacao.com/9/2142 v1.2更新 discuz插件之优雅草超级列表互动增强v1.2版本更新 [title]20220617 v1.2发布[/title] 增加了对php8的支持 增加了 对discuz3.5的支持

RocketMQ源码学习笔记:Broker启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Broker启动流程2、一些重要的类2.1、MappedFile2.2、MessgeStore2.3、MessageStore的加载启动流程 3、技术亮点3.1、 内存映射3.1.1、简介3.1.2、源码 1、Broker启动流程 Broker启动流程…

RabbitMQ中lazyqueue队列

lazyqueue队列非常强悍 springboot注解方式开启 // 使用注解的方式lazy.queue队列模式 非常GoodRabbitListener(queuesToDeclare Queue(name "lazy.queue",durable "true",arguments Argument(name "x-queue-mode",value "lazy&…

3.蓝牙模块HC-08

目录 一.简介​编辑 二.主要参数 三.模块引脚说明 四、LED指示灯状态 五.AT指令 5.1AT指令重点 5.2 AT指令注意点 5.3 AT指令集 六.AT常用指令 6.1 测试指令 AT 6.2 查询当前参数ATRX 6.3设置主从模式 ATROLE 6.4设置蓝牙模式 ATNAME 6.5 设置波特率 …

【FFmpeg】AVFormatContext结构体

【FFmpeg】AVFormatContext结构体 1.AVFormatContext结构体1.2 const struct AVInputFormat *iformat1.3 const struct AVOutputFormat *oformat 参考&#xff1a; FFMPEG结构体分析&#xff1a;AVFormatContext 示例工程&#xff1a; 【FFmpeg】调用ffmpeg库实现264软编 【FF…

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制&#xff0c;本篇文章是要将各类NMS添加到yolov5中&#xff0c;同时…

6.25作业

1.整理思维导图 2.终端输入两个数&#xff0c;判断两数是否相等&#xff0c;如果不相等&#xff0c;判断大小关系 #!/bin/bash read num1 read num2 if [ $num1 -eq $num2 ] then echo num1num2 elif [ $num1 -gt $num2 ] then echo "num1>num2" else echo &quo…

【基于构件的软件工程开发模型】

文章目录 前言一、基本概念二、优点1. 可重用性2. 易于维护3. 并行开发4. 灵活性 三、缺点1. 构件选择2. 接口管理3. 效率问题 前言 基于构件的开发模型是一种常见的方法之一&#xff0c;它将软件系统划分为独立的构件&#xff0c;并通过组装这些构件来构建整个系统。 一、基本…

200.回溯算法:子集||(力扣)

class Solution { public:vector<int> res; // 当前子集vector<vector<int>> result; // 存储所有子集void backtracing(vector<int>& nums, int index, vector<bool>& used) {result.push_back(res); // 将当前…